@skbkontur/react-ui 4.0.0 → 4.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/CHANGELOG.md +13 -0
- package/cjs/components/DatePicker/DatePicker.d.ts +0 -3
- package/cjs/components/DatePicker/DatePicker.js +14 -9
- package/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/cjs/components/Modal/Modal.js +2 -2
- package/cjs/components/Modal/Modal.js.map +1 -1
- package/cjs/components/Modal/ModalFooter.js +1 -0
- package/cjs/components/Modal/ModalFooter.js.map +1 -1
- package/cjs/components/Modal/ModalHeader.js +1 -0
- package/cjs/components/Modal/ModalHeader.js.map +1 -1
- package/cjs/components/Textarea/TextareaCounter.js +3 -4
- package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.js +15 -13
- package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
- package/cjs/internal/ThemeShowcase/ThemeShowcase.js +29 -29
- package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.js +14 -9
- package/cjs/internal/ThemeShowcase/VariablesCollector.js.map +1 -1
- package/cjs/internal/icons/SpinnerIcon.js +2 -2
- package/cjs/internal/icons/SpinnerIcon.js.map +1 -1
- package/components/DatePicker/DatePicker/DatePicker.js +19 -15
- package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
- package/components/DatePicker/DatePicker.d.ts +0 -3
- package/components/Modal/Modal/Modal.js +1 -1
- package/components/Modal/Modal/Modal.js.map +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js +1 -1
- package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
- package/components/Modal/ModalHeader/ModalHeader.js +1 -1
- package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
- package/components/Textarea/TextareaCounter/TextareaCounter.js +4 -6
- package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +18 -21
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
- package/internal/DropdownContainer/DropdownContainer.d.ts +1 -1
- package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +2 -2
- package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js +18 -10
- package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js.map +1 -1
- package/internal/icons/SpinnerIcon/SpinnerIcon.js +2 -3
- package/internal/icons/SpinnerIcon/SpinnerIcon.js.map +1 -1
- package/package.json +3 -2
|
@@ -163,57 +163,57 @@ ComponentShowcase = /*#__PURE__*/function (_React$Component2) {(0, _inheritsLoos
|
|
|
163
163
|
var _this$props = this.props,name = _this$props.name,description = _this$props.description,onVariableSelect = _this$props.onVariableSelect,isDebugMode = _this$props.isDebugMode;
|
|
164
164
|
var elements = Object.keys(description);
|
|
165
165
|
|
|
166
|
-
return /*#__PURE__*/
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
166
|
+
return elements.length ? /*#__PURE__*/
|
|
167
|
+
_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null,
|
|
168
|
+
function (theme) {
|
|
169
|
+
return /*#__PURE__*/(
|
|
170
|
+
_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/
|
|
171
|
+
_react.default.createElement(_Sticky.Sticky, { side: 'top', offset: 40 },
|
|
172
|
+
function (isSticky) {var _cx;return /*#__PURE__*/(
|
|
173
|
+
_react.default.createElement("h2", {
|
|
174
|
+
className: (0, _Emotion.cx)((_cx = {}, _cx[
|
|
175
|
+
_ThemeShowcase.styles.heading(theme)] = true, _cx[
|
|
176
|
+
_ThemeShowcase.styles.headingSticky()] = isSticky, _cx)) },
|
|
178
177
|
|
|
179
|
-
_this3.props.name));}), /*#__PURE__*/
|
|
180
178
|
|
|
179
|
+
_this3.props.name));}), /*#__PURE__*/
|
|
181
180
|
|
|
182
181
|
|
|
183
|
-
_react.default.createElement("table", { className: _ThemeShowcase.styles.table() }, /*#__PURE__*/
|
|
184
|
-
_react.default.createElement("thead", null, /*#__PURE__*/
|
|
185
|
-
_react.default.createElement("tr", null, /*#__PURE__*/
|
|
186
|
-
_react.default.createElement("th", { className: _ThemeShowcase.styles.headerCell(), style: { width: 170 } }, "ClassName"), /*#__PURE__*/
|
|
187
182
|
|
|
183
|
+
_react.default.createElement("table", { className: _ThemeShowcase.styles.table() }, /*#__PURE__*/
|
|
184
|
+
_react.default.createElement("thead", null, /*#__PURE__*/
|
|
185
|
+
_react.default.createElement("tr", null, /*#__PURE__*/
|
|
186
|
+
_react.default.createElement("th", { className: _ThemeShowcase.styles.headerCell(), style: { width: 170 } }, "ClassName"), /*#__PURE__*/
|
|
188
187
|
|
|
189
|
-
_react.default.createElement("th", { className: _ThemeShowcase.styles.headerCell(), style: { width: 210 } }, "Variable Name"), /*#__PURE__*/
|
|
190
188
|
|
|
189
|
+
_react.default.createElement("th", { className: _ThemeShowcase.styles.headerCell(), style: { width: 210 } }, "Variable Name"), /*#__PURE__*/
|
|
191
190
|
|
|
192
|
-
_react.default.createElement("th", { className: _ThemeShowcase.styles.headerCell(), style: { width: 250 } }, "Default Value"), /*#__PURE__*/
|
|
193
191
|
|
|
192
|
+
_react.default.createElement("th", { className: _ThemeShowcase.styles.headerCell(), style: { width: 250 } }, "Default Value"), /*#__PURE__*/
|
|
194
193
|
|
|
195
|
-
_react.default.createElement("th", { className: _ThemeShowcase.styles.headerCell(), style: { width: 250 } }, "Dark Value"))), /*#__PURE__*/
|
|
196
194
|
|
|
195
|
+
_react.default.createElement("th", { className: _ThemeShowcase.styles.headerCell(), style: { width: 250 } }, "Dark Value"))), /*#__PURE__*/
|
|
197
196
|
|
|
198
197
|
|
|
199
198
|
|
|
200
|
-
_react.default.createElement("tbody", null,
|
|
201
|
-
elements.map(function (el) {return /*#__PURE__*/(
|
|
202
|
-
_react.default.createElement(ComponentShowcaseRow, {
|
|
203
|
-
key: name + "_" + el,
|
|
204
|
-
element: el,
|
|
205
|
-
row: description[el],
|
|
206
|
-
onVariableSelect: onVariableSelect,
|
|
207
|
-
isDebugMode: isDebugMode }));})))));
|
|
208
199
|
|
|
200
|
+
_react.default.createElement("tbody", null,
|
|
201
|
+
elements.map(function (el) {return /*#__PURE__*/(
|
|
202
|
+
_react.default.createElement(ComponentShowcaseRow, {
|
|
203
|
+
key: name + "_" + el,
|
|
204
|
+
element: el,
|
|
205
|
+
row: description[el],
|
|
206
|
+
onVariableSelect: onVariableSelect,
|
|
207
|
+
isDebugMode: isDebugMode }));})))));
|
|
209
208
|
|
|
210
209
|
|
|
211
210
|
|
|
212
211
|
|
|
213
212
|
|
|
214
|
-
}));
|
|
215
213
|
|
|
214
|
+
}) :
|
|
216
215
|
|
|
216
|
+
null;
|
|
217
217
|
};return ComponentShowcase;}(_react.default.Component);var
|
|
218
218
|
|
|
219
219
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ThemeShowcase.tsx"],"names":["EMPTY_ARRAY","ALL_VARIABLES","Object","keys","defaultVariables","ThemeShowcase","props","state","isUnmounting","variablesDiff","getItems","query","Promise","resolve","getValues","handleVariableChange","item","setState","selectedVariable","handleUnexpectedVariableInput","values","length","resetVariable","undefined","isDebugMode","forEach","variable","found","ALL_USED_VARIABLES","includes","push","render","IS_PROXY_SUPPORTED","descriptionsToRender","COMPONENT_DESCRIPTIONS_BY_VARIABLE","value","COMPONENT_DESCRIPTIONS","callsCount","CALLS_COUNT","executionTime","EXECUTION_TIME","toFixed","theme","styles","searchBar","sort","map","componentName","componentWillUnmount","lowerCaseQuery","toLowerCase","trim","allItems","filter","usedVariable","startsWith","usedVariableName","label","React","Component","ComponentShowcase","name","description","onVariableSelect","elements","isSticky","heading","headingSticky","table","headerCell","width","el","ComponentShowcaseRow","element","row","rowSpan","variables","invisibleRow","invisibleDarkRow","darkVariables","cell","majorCell","elementName","invisibleCell","varName","dependencies","variableDefault","variableDark","hasNoVariables","suspiciousRow","darkRow","VariableName","handleVariableSelect","variableName","renderDependencies","dependency","DependencyName","dependencyName","dependencyDefault","dependencyDark","handleDependencySelect","onDependencySelect","VariableValue","valueIsColor","isColor","valueIsGradient","isGradient","hasExample","borderColor","ColorFunctions","contrast","colorExample","background","ShowUnusedVariables","diff","unusedVariablesWarning","v","input"],"mappings":"yPAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;AASA,uD;;AAEA,IAAMA,WAAqB,GAAG,EAA9B;;AAEA,IAAMC,aAAa,GAAGC,MAAM,CAACC,IAAP,CAAYC,2BAAZ,CAAtB,C;;;;;;;;;AASaC,a;;;;;;AAMX,yBAAYC,KAAZ,EAAkC;AAChC,wCAAMA,KAAN,UADgC,MAL3BC,KAK2B,GALJ,EAKI,OAH1BC,YAG0B,GAHX,KAGW,OAF1BC,aAE0B,GAFA,EAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwF1BC,IAAAA,QAxF0B,GAwFf,UAACC,KAAD,EAAmB;AACpC,aAAOC,OAAO,CAACC,OAAR,CAAgB,MAAKC,SAAL,CAAeH,KAAf,CAAhB,CAAP;AACD,KA1FiC;AA2F1BI,IAAAA,oBA3F0B,GA2FH,UAACC,IAAD,EAAwB;AACrD,UAAI,CAAC,MAAKR,YAAV,EAAwB;AACtB,cAAKS,QAAL,CAAc,EAAEC,gBAAgB,EAAEF,IAApB,EAAd;AACD;AACF,KA/FiC;AAgG1BG,IAAAA,6BAhG0B,GAgGM,UAACR,KAAD,EAAmB;AACzD,UAAMS,MAAM,GAAG,MAAKN,SAAL,CAAeH,KAAf,CAAf;AACA,UAAIS,MAAM,CAACC,MAAP,GAAgB,CAApB,EAAuB;AACrB,eAAOD,MAAM,CAAC,CAAD,CAAb;AACD,OAFD,MAEO;AACL,eAAO,MAAKE,aAAL,EAAP;AACD;AACF,KAvGiC;AAwG1BA,IAAAA,aAxG0B,GAwGV,YAAM;AAC5B,UAAI,CAAC,MAAKd,YAAV,EAAwB;AACtB,cAAKS,QAAL,CAAc,EAAEC,gBAAgB,EAAEK,SAApB,EAAd;AACD;AACF,KA5GiC,CAEhC,IAAIjB,KAAK,CAACkB,WAAV,EAAuB,CACrBvB,aAAa,CAACwB,OAAd,CAAsB,UAACC,QAAD,EAAc,CAClC,IAAMC,KAAK,GAAGC,uCAAmBC,QAAnB,CAA4BH,QAA5B,CAAd,CACA,IAAI,CAACC,KAAL,EAAY,CACV,MAAKlB,aAAL,CAAmBqB,IAAnB,CAAwBJ,QAAxB,EACD,CACF,CALD,EAMD,CAT+B,aAUjC,C,4CAEMK,M,GAAP,kBAAgB,mBACd,IAAI,CAACC,4BAAL,EAAyB,CACvB,oBACE,iUACqD,GADrD,eAEE,6BAAC,UAAD,IAAM,IAAI,EAAE,iCAAZ,EAA+C,MAAM,EAAE,QAAvD,uIAFF,MADF,CASD,CAED,IAAMd,gBAAgB,GAAG,KAAKX,KAAL,CAAWW,gBAApC,CACA,IAAMe,oBAAoB,GAAGf,gBAAgB,GACzCgB,uDAAmChB,gBAAgB,CAACiB,KAApD,KAA8D,EADrB,GAEzCC,0CAFJ,CAIA,IAAMZ,WAAW,GAAG,KAAKlB,KAAL,CAAWkB,WAA/B,CACA,IAAMa,UAAU,GAAGb,WAAW,SAAOc,+BAAP,oDAAgC,EAA9D,CACA,IAAMC,aAAa,GAAGf,WAAW,oGAAuBgB,mCAAeC,OAAf,CAAuB,CAAvB,CAAvB,UAAuD,EAAxF,CAEA,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACC,KAAD,EAAW,CACV,oBACE,6BAAC,cAAD,IAAQ,IAAI,MAAZ,EAAa,GAAG,EAAE,EAAlB,EAAsB,aAAa,EAAE,KAArC,iBACE,uDACE,6BAAC,cAAD,IAAQ,IAAI,EAAE,KAAd,iBACE,sCAAK,SAAS,EAAEC,sBAAOC,SAAP,CAAiBF,KAAjB,CAAhB,EAAyC,kBAAmBH,aAAnB,SAAoCF,UAA7E,iBACE,6BAAC,cAAD,IAAQ,GAAG,EAAE,EAAb,iBACE,6BAAC,kBAAD,IACE,QAAQ,EAAE,MAAI,CAAC3B,QADjB,EAEE,KAAK,EAAEQ,gBAFT,EAGE,aAAa,EAAE,MAAI,CAACH,oBAHtB,EAIE,iBAAiB,EAAE,MAAI,CAACI,6BAJ1B,EAKE,WAAW,EAAE,8BALf,GADF,EAQG,CAAC,CAACD,gBAAF,iBAAsB,6BAAC,UAAD,IAAM,OAAO,EAAE,MAAI,CAACI,aAApB,uDARzB,CADF,CADF,CADF,EAeGpB,MAAM,CAACC,IAAP,CAAY8B,oBAAZ,EACEY,IADF,GAEEC,GAFF,CAEM,UAACC,aAAD,uBACH,6BAAC,iBAAD,IACE,GAAG,EAAEA,aADP,EAEE,IAAI,EAAEA,aAFR,EAGE,WAAW,EAAEd,oBAAoB,CAACc,aAAD,CAHnC,EAIE,WAAW,EAAEvB,WAJf,EAKE,gBAAgB,EAAE,MAAI,CAACT,oBALzB,GADG,EAFN,CAfH,CADF,eA4BE,6BAAC,mBAAD,IAAqB,IAAI,EAAE,MAAI,CAACN,aAAhC,GA5BF,CADF,CAgCD,CAlCH,CADF,CAsCD,C,QACMuC,oB,GAAP,gCAAoC,CAClC,KAAKxC,YAAL,GAAoB,IAApB,CACD,C,QAEOM,S,GAAR,mBAAkBH,KAAlB,EAAiC,CAC/B,IAAMsC,cAAc,GAAGtC,KAAK,IAAIA,KAAK,CAACuC,WAAN,GAAoBC,IAApB,EAAhC,CACA,IAAIC,QAAQ,GAAGxB,sCAAf,CACA,IAAIqB,cAAJ,EAAoB,CAClBG,QAAQ,GAAGxB,uCAAmByB,MAAnB,CAA0B,UAACC,YAAD,UAAkBA,YAAY,CAACJ,WAAb,GAA2BK,UAA3B,CAAsCN,cAAtC,CAAlB,EAA1B,CAAX,CACD,CACD,OAAOG,QAAQ,CAACN,GAAT,CAAa,UAACU,gBAAD,UAAuB,EACzCrB,KAAK,EAAEqB,gBADkC,EAEzCC,KAAK,EAAED,gBAFkC,EAAvB,EAAb,CAAP,CAID,C,wBA7FgCE,eAAMC,S;;;;;;;;;AA2HnCC,iB;AACG7B,EAAAA,M,GAAP,kBAAgB;AACd,sBAA6D,KAAKzB,KAAlE,CAAQuD,IAAR,eAAQA,IAAR,CAAcC,WAAd,eAAcA,WAAd,CAA2BC,gBAA3B,eAA2BA,gBAA3B,CAA6CvC,WAA7C,eAA6CA,WAA7C;AACA,QAAMwC,QAAQ,GAAG9D,MAAM,CAACC,IAAP,CAAY2D,WAAZ,CAAjB;;AAEA;AACE,mCAAC,0BAAD,CAAc,QAAd;AACG,gBAACpB,KAAD,EAAW;AACV;AACE,uCAAC,cAAD,CAAO,QAAP;AACE,uCAAC,cAAD,IAAQ,IAAI,EAAE,KAAd,EAAqB,MAAM,EAAE,EAA7B;AACG,oBAACuB,QAAD;AACC;AACE,gBAAA,SAAS,EAAE;AACRtB,sCAAOuB,OAAP,CAAexB,KAAf,CADQ,IACgB,IADhB;AAERC,sCAAOwB,aAAP,EAFQ,IAEiBF,QAFjB,OADb;;;AAMG,cAAA,MAAI,CAAC3D,KAAL,CAAWuD,IANd,CADD,GADH,CADF;;;;AAaE,kDAAO,SAAS,EAAElB,sBAAOyB,KAAP,EAAlB;AACE;AACE;AACE,+CAAI,SAAS,EAAEzB,sBAAO0B,UAAP,EAAf,EAAoC,KAAK,EAAE,EAAEC,KAAK,EAAE,GAAT,EAA3C,gBADF;;;AAIE,+CAAI,SAAS,EAAE3B,sBAAO0B,UAAP,EAAf,EAAoC,KAAK,EAAE,EAAEC,KAAK,EAAE,GAAT,EAA3C,oBAJF;;;AAOE,+CAAI,SAAS,EAAE3B,sBAAO0B,UAAP,EAAf,EAAoC,KAAK,EAAE,EAAEC,KAAK,EAAE,GAAT,EAA3C,oBAPF;;;AAUE,+CAAI,SAAS,EAAE3B,sBAAO0B,UAAP,EAAf,EAAoC,KAAK,EAAE,EAAEC,KAAK,EAAE,GAAT,EAA3C,iBAVF,CADF,CADF;;;;;AAiBE;AACGN,UAAAA,QAAQ,CAAClB,GAAT,CAAa,UAACyB,EAAD;AACZ,2CAAC,oBAAD;AACE,gBAAA,GAAG,EAAKV,IAAL,SAAaU,EADlB;AAEE,gBAAA,OAAO,EAAEA,EAFX;AAGE,gBAAA,GAAG,EAAET,WAAW,CAACS,EAAD,CAHlB;AAIE,gBAAA,gBAAgB,EAAER,gBAJpB;AAKE,gBAAA,WAAW,EAAEvC,WALf,GADY,GAAb,CADH,CAjBF,CAbF,CADF;;;;;;;AA6CD,OA/CH,CADF;;;AAmDD,G,4BAxD6BkC,eAAMC,S;;;;;;;;;;AAkEhCa,oB;AACGzC,EAAAA,M,GAAP,kBAAgB;AACd,uBAA0C,KAAKzB,KAA/C,CAAiBiE,EAAjB,gBAAQE,OAAR,CAAqBC,GAArB,gBAAqBA,GAArB,CAA0BlD,WAA1B,gBAA0BA,WAA1B;AACA,QAAMmD,OAAO,GAAGD,GAAG,CAACE,SAAJ,CAAcvD,MAAd,GAAuB,CAAvC;;AAEA;AACE,mCAAC,0BAAD,CAAc,QAAd;AACG,gBAACqB,KAAD,EAAW;AACV;AACE,uCAAC,cAAD,CAAO,QAAP;AACE,+CAAI,SAAS,EAAE,iBAAGC,sBAAOkC,YAAP,EAAH,mBAA6BlC,sBAAOmC,gBAAP,EAA7B,IAAyDpC,KAAK,KAAKqC,qBAAnE,QAAf;AACE,+CAAI,SAAS,EAAE,iBAAGpC,sBAAOqC,IAAP,EAAH,EAAkBrC,sBAAOsC,SAAP,EAAlB,CAAf,EAAsD,OAAO,EAAEN,OAA/D;AACE,iDAAM,SAAS,EAAEhC,sBAAOuC,WAAP,EAAjB,SAAyCX,EAAzC,CADF,CADF;;AAIE,+CAAI,SAAS,EAAE5B,sBAAOwC,aAAP,EAAf,GAJF;AAKE,+CAAI,SAAS,EAAExC,sBAAOwC,aAAP,EAAf,GALF;AAME,+CAAI,SAAS,EAAExC,sBAAOwC,aAAP,EAAf,GANF,CADF;;AASGT,UAAAA,GAAG,CAACE,SAAJ,CAAc9B,GAAd,CAAkB,UAACsC,OAAD,EAAa;AAC9B,gBAAMC,YAAY,GAAGX,GAAG,CAACW,YAAJ,CAAiBD,OAAjB,KAA6BpF,WAAlD;AACA,gBAAMsF,eAAe,GAAGlF,4BAAiBgF,OAAjB,CAAxB;AACA,gBAAMG,YAAY,GAAGR,sBAAcK,OAAd,CAArB;AACA,gBAAMI,cAAc,GAAGhE,WAAW,IAAI,CAAC8D,eAAvC;AACA;AACE;AACE,gBAAA,GAAG,EAAKf,EAAL,SAAWa,OADhB;AAEE,gBAAA,SAAS,EAAE,iBAAGzC,sBAAO+B,GAAP,EAAH;AACR/B,sCAAO8C,aAAP,EADQ,IACiBD,cADjB;AAER7C,sCAAO+C,OAAP,EAFQ,IAEWhD,KAAK,KAAKqC,qBAFrB,QAFb;;;AAOE,mDAAI,SAAS,EAAEpC,sBAAOqC,IAAP,EAAf;AACE,2CAAC,YAAD;AACE,gBAAA,YAAY,EAAEI,OADhB;AAEE,gBAAA,YAAY,EAAEC,YAFhB;AAGE,gBAAA,gBAAgB,EAAE,MAAI,CAAC/E,KAAL,CAAWyD,gBAH/B,GADF,CAPF;;;AAcE,mDAAI,SAAS,EAAEpB,sBAAOqC,IAAP,EAAf;AACE,2CAAC,aAAD,IAAe,KAAK,EAAEM,eAAtB,GADF,CAdF;;AAiBE,mDAAI,SAAS,EAAE3C,sBAAOqC,IAAP,EAAf;AACE,2CAAC,aAAD,IAAe,KAAK,EAAEO,YAAtB,GADF,CAjBF,CADF;;;;AAuBD,WA5BA,CATH,CADF;;;AAyCD,OA3CH,CADF;;;AA+CD,G,+BApDgC7B,eAAMC,S;;;;;;;;;AA6DnCgC,Y;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BIC,IAAAA,oB,GAAuB,YAAM;AACnC,yBAA2C,OAAKtF,KAAhD,CAAQuF,YAAR,gBAAQA,YAAR,CAAsB9B,gBAAtB,gBAAsBA,gBAAtB;AACA,UAAIA,gBAAJ,EAAsB;AACpBA,QAAAA,gBAAgB,CAAC,EAAE5B,KAAK,EAAE0D,YAAT,EAAuBpC,KAAK,EAAEoC,YAA9B,EAAD,CAAhB;AACD;AACF,K,6DAlCM9D,M,GAAP,kBAAgB,CACd,oBACE,wDACE,uCAAM,SAAS,EAAEY,sBAAOkD,YAAP,EAAjB,EAAwC,OAAO,EAAE,KAAKD,oBAAtD,IACG,KAAKtF,KAAL,CAAWuF,YADd,CADF,EAIG,KAAKvF,KAAL,CAAW+E,YAAX,CAAwBhE,MAAxB,GAAiC,CAAjC,IAAsC,KAAKyE,kBAAL,EAJzC,CADF,CAQD,C,SAEOA,kB,GAAR,8BAA6B,CAC3B,mBAA2C,KAAKxF,KAAhD,CAAQ+E,YAAR,gBAAQA,YAAR,CAAsBtB,gBAAtB,gBAAsBA,gBAAtB,CACA,oBACE,6BAAC,cAAD,CAAO,QAAP,qBACE,wCADF,eAEE,wCAFF,8DAIGsB,YAAY,CAACvC,GAAb,CAAiB,UAACiD,UAAD,uBAChB,6BAAC,cAAD,IACE,GAAG,kBAAgBA,UADrB,EAEE,cAAc,EAAEA,UAFlB,EAGE,kBAAkB,EAAEhC,gBAHtB,GADgB,EAAjB,CAJH,CADF,CAcD,C,uBA5BwBL,eAAMC,S;;;;;;;AA0C3BqC,c;;;;;;;;;;;;;;;AAeIlF,IAAAA,S,GAAY,YAAM;AACxB,UAAMmF,cAAc,GAAG,OAAK3F,KAAL,CAAW2F,cAAlC;AACA,UAAMC,iBAAiB,GAAG9F,4BAAiB6F,cAAjB,CAA1B;AACA,UAAME,cAAc,GAAGpB,sBAAckB,cAAd,CAAvB;AACA;AACE,qCAAC,cAAD,CAAO,QAAP;AACE,mFAAsB,6BAAC,aAAD,IAAe,KAAK,EAAEC,iBAAtB,GAAtB,CADF;AAEE,gFAAmB,6BAAC,aAAD,IAAe,KAAK,EAAEC,cAAtB,GAAnB,CAFF,CADF;;;AAMD,K;;AAEOC,IAAAA,sB,GAAyB,YAAM;AACrC,yBAA+C,OAAK9F,KAApD,CAAQ2F,cAAR,gBAAQA,cAAR,CAAwBI,kBAAxB,gBAAwBA,kBAAxB;AACA,UAAIA,kBAAJ,EAAwB;AACtBA,QAAAA,kBAAkB,CAAC,EAAElE,KAAK,EAAE8D,cAAT,EAAyBxC,KAAK,EAAEwC,cAAhC,EAAD,CAAlB;AACD;AACF,K,+DA/BMlE,M,GAAP,kBAAgB,CACd,oBACE,6BAAC,cAAD,CAAO,QAAP,qBACE,wCADF,YAEU,GAFV,eAGE,6BAAC,gBAAD,IAAS,OAAO,EAAE,OAAlB,EAA2B,MAAM,EAAE,KAAKjB,SAAxC,EAAmD,GAAG,EAAE,cAAxD,iBACE,uCAAM,SAAS,EAAE6B,sBAAOkD,YAAP,EAAjB,EAAwC,OAAO,EAAE,KAAKO,sBAAtD,IACG,KAAK9F,KAAL,CAAW2F,cADd,CADF,CAHF,CADF,CAWD,C,yBAb0BvC,eAAMC,S;;;AAmCnC,IAAM2C,aAAa,GAAG,SAAhBA,aAAgB,CAAChG,KAAD,EAA8B;AAClD,MAAM6B,KAAK,GAAG7B,KAAK,CAAC6B,KAApB;AACA,MAAMoE,YAAY,GAAGC,OAAO,CAACrE,KAAD,CAA5B;AACA,MAAMsE,eAAe,GAAGC,UAAU,CAACvE,KAAD,CAAlC;AACA,MAAMwE,UAAU,GAAGJ,YAAY,IAAIE,eAAnC;AACA,MAAIG,WAAW,GAAG,aAAlB;AACA,MAAID,UAAJ,EAAgB;AACdC,IAAAA,WAAW,GAAGL,YAAY,GAAGM,cAAc,CAACC,QAAf,CAAwB3E,KAAxB,CAAH,GAAoC,MAA9D;AACD;;AAED;AACE,2CAAM,SAAS,EAAE,kCAAMQ,sBAAOpB,SAAP,EAAN,IAA2B,CAACY,KAA5B,QAAjB;AACGwE,IAAAA,UAAU,iBAAI,uCAAM,SAAS,EAAEhE,sBAAOoE,YAAP,EAAjB,EAAwC,KAAK,EAAE,EAAEC,UAAU,EAAE7E,KAAd,EAAqByE,WAAW,EAAXA,WAArB,EAA/C,GADjB;AAEGzE,IAAAA,KAAK,IAAI,WAFZ,CADF;;;AAMD,CAhBD;;AAkBA,IAAM8E,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAC3G,KAAD,EAA+B;AACzD,MAAIA,KAAK,CAAC4G,IAAN,CAAW7F,MAAX,KAAsB,CAA1B,EAA6B;AAC3B,WAAO,IAAP;AACD;;AAED;AACE,0CAAK,SAAS,EAAEsB,sBAAOwE,sBAAP,EAAhB;AACgC7G,IAAAA,KAAK,CAAC4G,IAAN,CAAW7F,MAD3C;;AAGE;AACGf,IAAAA,KAAK,CAAC4G,IAAN,CAAWrE,IAAX,GAAkBC,GAAlB,CAAsB,UAACsE,CAAD;AACrB,6CAAI,GAAG,EAAEA,CAAT,IAAaA,CAAb,CADqB,GAAtB,CADH,CAHF,CADF;;;;;AAWD,CAhBD;;AAkBA,SAASZ,OAAT,CAAiBa,KAAjB,EAAgC;AAC9B,SAAO,CAAC,CAACA,KAAF,KAAYA,KAAK,CAAC9D,UAAN,CAAiB,GAAjB,KAAyB8D,KAAK,CAAC9D,UAAN,CAAiB,KAAjB,CAAzB,IAAoD8D,KAAK,CAAC9D,UAAN,CAAiB,KAAjB,CAAhE,CAAP;AACD;;AAED,SAASmD,UAAT,CAAoBW,KAApB,EAAmC;AACjC,SAAO,CAAC,CAACA,KAAF,IAAWA,KAAK,CAAC9D,UAAN,CAAiB,iBAAjB,CAAlB;AACD","sourcesContent":["import React from 'react';\n\nimport { DEFAULT_THEME as defaultVariables } from '../../lib/theming/themes/DefaultTheme';\nimport { DARK_THEME as darkVariables } from '../../lib/theming/themes/DarkTheme';\nimport { ComboBox, ComboBoxItem } from '../../components/ComboBox';\nimport { Gapped } from '../../components/Gapped';\nimport { Link } from '../../components/Link';\nimport { Sticky } from '../../components/Sticky';\nimport * as ColorFunctions from '../../lib/styles/ColorFunctions';\nimport { Tooltip } from '../../components/Tooltip';\nimport { IS_PROXY_SUPPORTED } from '../../lib/Supports';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport {\n ALL_USED_VARIABLES,\n CALLS_COUNT,\n COMPONENT_DESCRIPTIONS,\n COMPONENT_DESCRIPTIONS_BY_VARIABLE,\n ComponentDescriptionType,\n ComponentRowDescriptionType,\n EXECUTION_TIME,\n} from './VariablesCollector';\nimport { styles } from './ThemeShowcase.styles';\n\nconst EMPTY_ARRAY: string[] = [];\n\nconst ALL_VARIABLES = Object.keys(defaultVariables) as Array<keyof Theme>;\n\ninterface ShowcaseProps {\n isDebugMode?: boolean;\n}\ninterface ShowcaseState {\n selectedVariable?: ComboBoxItem;\n}\n\nexport class ThemeShowcase extends React.Component<ShowcaseProps, ShowcaseState> {\n public state: ShowcaseState = {};\n\n private isUnmounting = false;\n private variablesDiff: string[] = [];\n\n constructor(props: ShowcaseProps) {\n super(props);\n if (props.isDebugMode) {\n ALL_VARIABLES.forEach((variable) => {\n const found = ALL_USED_VARIABLES.includes(variable);\n if (!found) {\n this.variablesDiff.push(variable);\n }\n });\n }\n }\n\n public render() {\n if (!IS_PROXY_SUPPORTED) {\n return (\n <div>\n Таблица использования переменных доступна только в{' '}\n <Link href={'https://caniuse.com/#feat=proxy'} target={'_blank'}>\n браузерах с поддержкой Proxy\n </Link>\n .\n </div>\n );\n }\n\n const selectedVariable = this.state.selectedVariable;\n const descriptionsToRender = selectedVariable\n ? COMPONENT_DESCRIPTIONS_BY_VARIABLE[selectedVariable.value] || {}\n : COMPONENT_DESCRIPTIONS;\n\n const isDebugMode = this.props.isDebugMode;\n const callsCount = isDebugMode ? `(${CALLS_COUNT} вызовов)` : '';\n const executionTime = isDebugMode ? `Сгенерировано за ${EXECUTION_TIME.toFixed(3)}ms` : '';\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <Gapped wrap gap={30} verticalAlign={'top'}>\n <div>\n <Sticky side={'top'}>\n <div className={styles.searchBar(theme)} data-perf-info={`${executionTime} ${callsCount}`}>\n <Gapped gap={15}>\n <ComboBox\n getItems={this.getItems}\n value={selectedVariable}\n onValueChange={this.handleVariableChange}\n onUnexpectedInput={this.handleUnexpectedVariableInput}\n placeholder={'поиск по названию переменной'}\n />\n {!!selectedVariable && <Link onClick={this.resetVariable}>сбросить</Link>}\n </Gapped>\n </div>\n </Sticky>\n {Object.keys(descriptionsToRender)\n .sort()\n .map((componentName) => (\n <ComponentShowcase\n key={componentName}\n name={componentName}\n description={descriptionsToRender[componentName]}\n isDebugMode={isDebugMode}\n onVariableSelect={this.handleVariableChange}\n />\n ))}\n </div>\n <ShowUnusedVariables diff={this.variablesDiff} />\n </Gapped>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public componentWillUnmount(): void {\n this.isUnmounting = true;\n }\n\n private getValues(query: string) {\n const lowerCaseQuery = query && query.toLowerCase().trim();\n let allItems = ALL_USED_VARIABLES;\n if (lowerCaseQuery) {\n allItems = ALL_USED_VARIABLES.filter((usedVariable) => usedVariable.toLowerCase().startsWith(lowerCaseQuery));\n }\n return allItems.map((usedVariableName) => ({\n value: usedVariableName,\n label: usedVariableName,\n }));\n }\n private getItems = (query: string) => {\n return Promise.resolve(this.getValues(query));\n };\n private handleVariableChange = (item: ComboBoxItem) => {\n if (!this.isUnmounting) {\n this.setState({ selectedVariable: item });\n }\n };\n private handleUnexpectedVariableInput = (query: string) => {\n const values = this.getValues(query);\n if (values.length > 0) {\n return values[0];\n } else {\n return this.resetVariable();\n }\n };\n private resetVariable = () => {\n if (!this.isUnmounting) {\n this.setState({ selectedVariable: undefined });\n }\n };\n}\n\ninterface ComponentShowcaseProps {\n name: string;\n description: ComponentDescriptionType;\n isDebugMode?: boolean;\n onVariableSelect: (item: ComboBoxItem) => void;\n}\nclass ComponentShowcase extends React.Component<ComponentShowcaseProps, {}> {\n public render() {\n const { name, description, onVariableSelect, isDebugMode } = this.props;\n const elements = Object.keys(description);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <React.Fragment>\n <Sticky side={'top'} offset={40}>\n {(isSticky) => (\n <h2\n className={cx({\n [styles.heading(theme)]: true,\n [styles.headingSticky()]: isSticky,\n })}\n >\n {this.props.name}\n </h2>\n )}\n </Sticky>\n <table className={styles.table()}>\n <thead>\n <tr>\n <th className={styles.headerCell()} style={{ width: 170 }}>\n ClassName\n </th>\n <th className={styles.headerCell()} style={{ width: 210 }}>\n Variable Name\n </th>\n <th className={styles.headerCell()} style={{ width: 250 }}>\n Default Value\n </th>\n <th className={styles.headerCell()} style={{ width: 250 }}>\n Dark Value\n </th>\n </tr>\n </thead>\n <tbody>\n {elements.map((el) => (\n <ComponentShowcaseRow\n key={`${name}_${el}`}\n element={el}\n row={description[el]}\n onVariableSelect={onVariableSelect}\n isDebugMode={isDebugMode}\n />\n ))}\n </tbody>\n </table>\n </React.Fragment>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n}\n\ninterface ComponentShowcaseRowProps {\n element: string;\n row: ComponentRowDescriptionType;\n isDebugMode?: boolean;\n onVariableSelect: (item: ComboBoxItem) => void;\n}\n\nclass ComponentShowcaseRow extends React.Component<ComponentShowcaseRowProps> {\n public render() {\n const { element: el, row, isDebugMode } = this.props;\n const rowSpan = row.variables.length + 1;\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <React.Fragment>\n <tr className={cx(styles.invisibleRow(), { [styles.invisibleDarkRow()]: theme === darkVariables })}>\n <td className={cx(styles.cell(), styles.majorCell())} rowSpan={rowSpan}>\n <span className={styles.elementName()}>.{el}</span>\n </td>\n <td className={styles.invisibleCell()} />\n <td className={styles.invisibleCell()} />\n <td className={styles.invisibleCell()} />\n </tr>\n {row.variables.map((varName) => {\n const dependencies = row.dependencies[varName] || EMPTY_ARRAY;\n const variableDefault = defaultVariables[varName] as string;\n const variableDark = darkVariables[varName] as string;\n const hasNoVariables = isDebugMode && !variableDefault;\n return (\n <tr\n key={`${el}_${varName}`}\n className={cx(styles.row(), {\n [styles.suspiciousRow()]: hasNoVariables,\n [styles.darkRow()]: theme === darkVariables,\n })}\n >\n <td className={styles.cell()}>\n <VariableName\n variableName={varName as string}\n dependencies={dependencies}\n onVariableSelect={this.props.onVariableSelect}\n />\n </td>\n <td className={styles.cell()}>\n <VariableValue value={variableDefault} />\n </td>\n <td className={styles.cell()}>\n <VariableValue value={variableDark} />\n </td>\n </tr>\n );\n })}\n </React.Fragment>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n}\n\ninterface VariableNameProps {\n variableName: string;\n dependencies: Array<keyof Theme>;\n onVariableSelect: (item: ComboBoxItem) => void;\n}\n\nclass VariableName extends React.Component<VariableNameProps> {\n public render() {\n return (\n <span>\n <span className={styles.variableName()} onClick={this.handleVariableSelect}>\n {this.props.variableName}\n </span>\n {this.props.dependencies.length > 0 && this.renderDependencies()}\n </span>\n );\n }\n\n private renderDependencies() {\n const { dependencies, onVariableSelect } = this.props;\n return (\n <React.Fragment>\n <br />\n <br />\n зависит от:\n {dependencies.map((dependency) => (\n <DependencyName\n key={`dependency_${dependency}`}\n dependencyName={dependency}\n onDependencySelect={onVariableSelect}\n />\n ))}\n </React.Fragment>\n );\n }\n\n private handleVariableSelect = () => {\n const { variableName, onVariableSelect } = this.props;\n if (onVariableSelect) {\n onVariableSelect({ value: variableName, label: variableName });\n }\n };\n}\n\ninterface DependencyNameProps {\n dependencyName: keyof Theme;\n onDependencySelect: (item: ComboBoxItem) => void;\n}\nclass DependencyName extends React.Component<DependencyNameProps> {\n public render() {\n return (\n <React.Fragment>\n <br />\n –{' '}\n <Tooltip trigger={'hover'} render={this.getValues} pos={'right middle'}>\n <span className={styles.variableName()} onClick={this.handleDependencySelect}>\n {this.props.dependencyName}\n </span>\n </Tooltip>\n </React.Fragment>\n );\n }\n\n private getValues = () => {\n const dependencyName = this.props.dependencyName;\n const dependencyDefault = defaultVariables[dependencyName] as string;\n const dependencyDark = darkVariables[dependencyName] as string;\n return (\n <React.Fragment>\n <span>Default value: {<VariableValue value={dependencyDefault} />}</span>\n <span>Dark value: {<VariableValue value={dependencyDark} />}</span>\n </React.Fragment>\n );\n };\n\n private handleDependencySelect = () => {\n const { dependencyName, onDependencySelect } = this.props;\n if (onDependencySelect) {\n onDependencySelect({ value: dependencyName, label: dependencyName });\n }\n };\n}\n\nconst VariableValue = (props: { value: string }) => {\n const value = props.value;\n const valueIsColor = isColor(value);\n const valueIsGradient = isGradient(value);\n const hasExample = valueIsColor || valueIsGradient;\n let borderColor = 'transparent';\n if (hasExample) {\n borderColor = valueIsColor ? ColorFunctions.contrast(value) : '#000';\n }\n\n return (\n <span className={cx({ [styles.undefined()]: !value })}>\n {hasExample && <span className={styles.colorExample()} style={{ background: value, borderColor }} />}\n {value || 'undefined'}\n </span>\n );\n};\n\nconst ShowUnusedVariables = (props: { diff: string[] }) => {\n if (props.diff.length === 0) {\n return null;\n }\n\n return (\n <div className={styles.unusedVariablesWarning()}>\n Неиспользованные переменные ({props.diff.length}\n ):\n <ul>\n {props.diff.sort().map((v) => (\n <li key={v}>{v}</li>\n ))}\n </ul>\n </div>\n );\n};\n\nfunction isColor(input: string) {\n return !!input && (input.startsWith('#') || input.startsWith('rgb') || input.startsWith('hsl'));\n}\n\nfunction isGradient(input: string) {\n return !!input && input.startsWith('linear-gradient');\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["ThemeShowcase.tsx"],"names":["EMPTY_ARRAY","ALL_VARIABLES","Object","keys","defaultVariables","ThemeShowcase","props","state","isUnmounting","variablesDiff","getItems","query","Promise","resolve","getValues","handleVariableChange","item","setState","selectedVariable","handleUnexpectedVariableInput","values","length","resetVariable","undefined","isDebugMode","forEach","variable","found","ALL_USED_VARIABLES","includes","push","render","IS_PROXY_SUPPORTED","descriptionsToRender","COMPONENT_DESCRIPTIONS_BY_VARIABLE","value","COMPONENT_DESCRIPTIONS","callsCount","CALLS_COUNT","executionTime","EXECUTION_TIME","toFixed","theme","styles","searchBar","sort","map","componentName","componentWillUnmount","lowerCaseQuery","toLowerCase","trim","allItems","filter","usedVariable","startsWith","usedVariableName","label","React","Component","ComponentShowcase","name","description","onVariableSelect","elements","isSticky","heading","headingSticky","table","headerCell","width","el","ComponentShowcaseRow","element","row","rowSpan","variables","invisibleRow","invisibleDarkRow","darkVariables","cell","majorCell","elementName","invisibleCell","varName","dependencies","variableDefault","variableDark","hasNoVariables","suspiciousRow","darkRow","VariableName","handleVariableSelect","variableName","renderDependencies","dependency","DependencyName","dependencyName","dependencyDefault","dependencyDark","handleDependencySelect","onDependencySelect","VariableValue","valueIsColor","isColor","valueIsGradient","isGradient","hasExample","borderColor","ColorFunctions","contrast","colorExample","background","ShowUnusedVariables","diff","unusedVariablesWarning","v","input"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { DEFAULT_THEME as defaultVariables } from '../../lib/theming/themes/DefaultTheme';\nimport { DARK_THEME as darkVariables } from '../../lib/theming/themes/DarkTheme';\nimport { ComboBox, ComboBoxItem } from '../../components/ComboBox';\nimport { Gapped } from '../../components/Gapped';\nimport { Link } from '../../components/Link';\nimport { Sticky } from '../../components/Sticky';\nimport * as ColorFunctions from '../../lib/styles/ColorFunctions';\nimport { Tooltip } from '../../components/Tooltip';\nimport { IS_PROXY_SUPPORTED } from '../../lib/Supports';\nimport { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport {\n ALL_USED_VARIABLES,\n CALLS_COUNT,\n COMPONENT_DESCRIPTIONS,\n COMPONENT_DESCRIPTIONS_BY_VARIABLE,\n ComponentDescriptionType,\n ComponentRowDescriptionType,\n EXECUTION_TIME,\n} from './VariablesCollector';\nimport { styles } from './ThemeShowcase.styles';\n\nconst EMPTY_ARRAY: string[] = [];\n\nconst ALL_VARIABLES = Object.keys(defaultVariables) as Array<keyof Theme>;\n\ninterface ShowcaseProps {\n isDebugMode?: boolean;\n}\ninterface ShowcaseState {\n selectedVariable?: ComboBoxItem;\n}\n\nexport class ThemeShowcase extends React.Component<ShowcaseProps, ShowcaseState> {\n public state: ShowcaseState = {};\n\n private isUnmounting = false;\n private variablesDiff: string[] = [];\n\n constructor(props: ShowcaseProps) {\n super(props);\n if (props.isDebugMode) {\n ALL_VARIABLES.forEach((variable) => {\n const found = ALL_USED_VARIABLES.includes(variable);\n if (!found) {\n this.variablesDiff.push(variable);\n }\n });\n }\n }\n\n public render() {\n if (!IS_PROXY_SUPPORTED) {\n return (\n <div>\n Таблица использования переменных доступна только в{' '}\n <Link href={'https://caniuse.com/#feat=proxy'} target={'_blank'}>\n браузерах с поддержкой Proxy\n </Link>\n .\n </div>\n );\n }\n\n const selectedVariable = this.state.selectedVariable;\n const descriptionsToRender = selectedVariable\n ? COMPONENT_DESCRIPTIONS_BY_VARIABLE[selectedVariable.value] || {}\n : COMPONENT_DESCRIPTIONS;\n\n const isDebugMode = this.props.isDebugMode;\n const callsCount = isDebugMode ? `(${CALLS_COUNT} вызовов)` : '';\n const executionTime = isDebugMode ? `Сгенерировано за ${EXECUTION_TIME.toFixed(3)}ms` : '';\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <Gapped wrap gap={30} verticalAlign={'top'}>\n <div>\n <Sticky side={'top'}>\n <div className={styles.searchBar(theme)} data-perf-info={`${executionTime} ${callsCount}`}>\n <Gapped gap={15}>\n <ComboBox\n getItems={this.getItems}\n value={selectedVariable}\n onValueChange={this.handleVariableChange}\n onUnexpectedInput={this.handleUnexpectedVariableInput}\n placeholder={'поиск по названию переменной'}\n />\n {!!selectedVariable && <Link onClick={this.resetVariable}>сбросить</Link>}\n </Gapped>\n </div>\n </Sticky>\n {Object.keys(descriptionsToRender)\n .sort()\n .map((componentName) => (\n <ComponentShowcase\n key={componentName}\n name={componentName}\n description={descriptionsToRender[componentName]}\n isDebugMode={isDebugMode}\n onVariableSelect={this.handleVariableChange}\n />\n ))}\n </div>\n <ShowUnusedVariables diff={this.variablesDiff} />\n </Gapped>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public componentWillUnmount(): void {\n this.isUnmounting = true;\n }\n\n private getValues(query: string) {\n const lowerCaseQuery = query && query.toLowerCase().trim();\n let allItems = ALL_USED_VARIABLES;\n if (lowerCaseQuery) {\n allItems = ALL_USED_VARIABLES.filter((usedVariable) => usedVariable.toLowerCase().startsWith(lowerCaseQuery));\n }\n return allItems.map((usedVariableName) => ({\n value: usedVariableName,\n label: usedVariableName,\n }));\n }\n private getItems = (query: string) => {\n return Promise.resolve(this.getValues(query));\n };\n private handleVariableChange = (item: ComboBoxItem) => {\n if (!this.isUnmounting) {\n this.setState({ selectedVariable: item });\n }\n };\n private handleUnexpectedVariableInput = (query: string) => {\n const values = this.getValues(query);\n if (values.length > 0) {\n return values[0];\n } else {\n return this.resetVariable();\n }\n };\n private resetVariable = () => {\n if (!this.isUnmounting) {\n this.setState({ selectedVariable: undefined });\n }\n };\n}\n\ninterface ComponentShowcaseProps {\n name: string;\n description: ComponentDescriptionType;\n isDebugMode?: boolean;\n onVariableSelect: (item: ComboBoxItem) => void;\n}\nclass ComponentShowcase extends React.Component<ComponentShowcaseProps, {}> {\n public render() {\n const { name, description, onVariableSelect, isDebugMode } = this.props;\n const elements = Object.keys(description);\n\n return elements.length ? (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <React.Fragment>\n <Sticky side={'top'} offset={40}>\n {(isSticky) => (\n <h2\n className={cx({\n [styles.heading(theme)]: true,\n [styles.headingSticky()]: isSticky,\n })}\n >\n {this.props.name}\n </h2>\n )}\n </Sticky>\n <table className={styles.table()}>\n <thead>\n <tr>\n <th className={styles.headerCell()} style={{ width: 170 }}>\n ClassName\n </th>\n <th className={styles.headerCell()} style={{ width: 210 }}>\n Variable Name\n </th>\n <th className={styles.headerCell()} style={{ width: 250 }}>\n Default Value\n </th>\n <th className={styles.headerCell()} style={{ width: 250 }}>\n Dark Value\n </th>\n </tr>\n </thead>\n <tbody>\n {elements.map((el) => (\n <ComponentShowcaseRow\n key={`${name}_${el}`}\n element={el}\n row={description[el]}\n onVariableSelect={onVariableSelect}\n isDebugMode={isDebugMode}\n />\n ))}\n </tbody>\n </table>\n </React.Fragment>\n );\n }}\n </ThemeContext.Consumer>\n ) : null;\n }\n}\n\ninterface ComponentShowcaseRowProps {\n element: string;\n row: ComponentRowDescriptionType;\n isDebugMode?: boolean;\n onVariableSelect: (item: ComboBoxItem) => void;\n}\n\nclass ComponentShowcaseRow extends React.Component<ComponentShowcaseRowProps> {\n public render() {\n const { element: el, row, isDebugMode } = this.props;\n const rowSpan = row.variables.length + 1;\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <React.Fragment>\n <tr className={cx(styles.invisibleRow(), { [styles.invisibleDarkRow()]: theme === darkVariables })}>\n <td className={cx(styles.cell(), styles.majorCell())} rowSpan={rowSpan}>\n <span className={styles.elementName()}>.{el}</span>\n </td>\n <td className={styles.invisibleCell()} />\n <td className={styles.invisibleCell()} />\n <td className={styles.invisibleCell()} />\n </tr>\n {row.variables.map((varName) => {\n const dependencies = row.dependencies[varName] || EMPTY_ARRAY;\n const variableDefault = defaultVariables[varName] as string;\n const variableDark = darkVariables[varName] as string;\n const hasNoVariables = isDebugMode && !variableDefault;\n return (\n <tr\n key={`${el}_${varName}`}\n className={cx(styles.row(), {\n [styles.suspiciousRow()]: hasNoVariables,\n [styles.darkRow()]: theme === darkVariables,\n })}\n >\n <td className={styles.cell()}>\n <VariableName\n variableName={varName as string}\n dependencies={dependencies}\n onVariableSelect={this.props.onVariableSelect}\n />\n </td>\n <td className={styles.cell()}>\n <VariableValue value={variableDefault} />\n </td>\n <td className={styles.cell()}>\n <VariableValue value={variableDark} />\n </td>\n </tr>\n );\n })}\n </React.Fragment>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n}\n\ninterface VariableNameProps {\n variableName: string;\n dependencies: Array<keyof Theme>;\n onVariableSelect: (item: ComboBoxItem) => void;\n}\n\nclass VariableName extends React.Component<VariableNameProps> {\n public render() {\n return (\n <span>\n <span className={styles.variableName()} onClick={this.handleVariableSelect}>\n {this.props.variableName}\n </span>\n {this.props.dependencies.length > 0 && this.renderDependencies()}\n </span>\n );\n }\n\n private renderDependencies() {\n const { dependencies, onVariableSelect } = this.props;\n return (\n <React.Fragment>\n <br />\n <br />\n зависит от:\n {dependencies.map((dependency) => (\n <DependencyName\n key={`dependency_${dependency}`}\n dependencyName={dependency}\n onDependencySelect={onVariableSelect}\n />\n ))}\n </React.Fragment>\n );\n }\n\n private handleVariableSelect = () => {\n const { variableName, onVariableSelect } = this.props;\n if (onVariableSelect) {\n onVariableSelect({ value: variableName, label: variableName });\n }\n };\n}\n\ninterface DependencyNameProps {\n dependencyName: keyof Theme;\n onDependencySelect: (item: ComboBoxItem) => void;\n}\nclass DependencyName extends React.Component<DependencyNameProps> {\n public render() {\n return (\n <React.Fragment>\n <br />\n –{' '}\n <Tooltip trigger={'hover'} render={this.getValues} pos={'right middle'}>\n <span className={styles.variableName()} onClick={this.handleDependencySelect}>\n {this.props.dependencyName}\n </span>\n </Tooltip>\n </React.Fragment>\n );\n }\n\n private getValues = () => {\n const dependencyName = this.props.dependencyName;\n const dependencyDefault = defaultVariables[dependencyName] as string;\n const dependencyDark = darkVariables[dependencyName] as string;\n return (\n <React.Fragment>\n <span>Default value: {<VariableValue value={dependencyDefault} />}</span>\n <span>Dark value: {<VariableValue value={dependencyDark} />}</span>\n </React.Fragment>\n );\n };\n\n private handleDependencySelect = () => {\n const { dependencyName, onDependencySelect } = this.props;\n if (onDependencySelect) {\n onDependencySelect({ value: dependencyName, label: dependencyName });\n }\n };\n}\n\nconst VariableValue = (props: { value: string }) => {\n const value = props.value;\n const valueIsColor = isColor(value);\n const valueIsGradient = isGradient(value);\n const hasExample = valueIsColor || valueIsGradient;\n let borderColor = 'transparent';\n if (hasExample) {\n borderColor = valueIsColor ? ColorFunctions.contrast(value) : '#000';\n }\n\n return (\n <span className={cx({ [styles.undefined()]: !value })}>\n {hasExample && <span className={styles.colorExample()} style={{ background: value, borderColor }} />}\n {value || 'undefined'}\n </span>\n );\n};\n\nconst ShowUnusedVariables = (props: { diff: string[] }) => {\n if (props.diff.length === 0) {\n return null;\n }\n\n return (\n <div className={styles.unusedVariablesWarning()}>\n Неиспользованные переменные ({props.diff.length}\n ):\n <ul>\n {props.diff.sort().map((v) => (\n <li key={v}>{v}</li>\n ))}\n </ul>\n </div>\n );\n};\n\nfunction isColor(input: string) {\n return !!input && (input.startsWith('#') || input.startsWith('rgb') || input.startsWith('hsl'));\n}\n\nfunction isGradient(input: string) {\n return !!input && input.startsWith('linear-gradient');\n}\n"]}
|
|
@@ -106,18 +106,23 @@ if (_Supports.IS_PROXY_SUPPORTED) {
|
|
|
106
106
|
function getProxyHandler(accumulator, dependencies) {
|
|
107
107
|
var accessLevel = 0;
|
|
108
108
|
var rootProp = '';
|
|
109
|
+
function isThemeVariable(theme, name) {
|
|
110
|
+
return typeof theme[name] === 'string';
|
|
111
|
+
}
|
|
109
112
|
return {
|
|
110
113
|
get: function get(target, prop, receiver) {
|
|
111
114
|
var propName = prop;
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
dependencies[rootProp]
|
|
119
|
-
|
|
120
|
-
dependencies[rootProp].
|
|
115
|
+
if (isThemeVariable(target, propName)) {
|
|
116
|
+
ALL_USED_VARIABLES_SET.add(propName);
|
|
117
|
+
if (accessLevel === 0) {
|
|
118
|
+
rootProp = propName;
|
|
119
|
+
accumulator.add(propName);
|
|
120
|
+
} else {
|
|
121
|
+
if (!dependencies[rootProp]) {
|
|
122
|
+
dependencies[rootProp] = [propName];
|
|
123
|
+
} else if (!dependencies[rootProp].includes(propName)) {
|
|
124
|
+
dependencies[rootProp].push(propName);
|
|
125
|
+
}
|
|
121
126
|
}
|
|
122
127
|
}
|
|
123
128
|
accessLevel++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["VariablesCollector.ts"],"names":["callsCount","executionTime","ALL_USED_VARIABLES_SET","Set","COMPONENT_DESCRIPTIONS","COMPONENT_DESCRIPTIONS_BY_VARIABLE","IS_PROXY_SUPPORTED","baseThemes","push","DEFAULT_THEME","DARK_THEME","componentsContext","require","context","keys","forEach","fileName","fileNameStart","lastIndexOf","componentName","substring","replace","componentDescription","Object","exportName","styles","elementName","jsStyle","variablesAccumulator","dependencies","elementProxyHandler","getProxyHandler","themes","map","t","Proxy","variables","Array","from","length","variableName","variableNode","componentNode","includes","dependenciesList","dependencyName","dependencyNode","accumulator","accessLevel","rootProp","get","target","prop","receiver","propName","add","start","performance","now","result","Reflect","ALL_USED_VARIABLES","CALLS_COUNT","EXECUTION_TIME"],"mappings":";AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAIA,UAAU,GAAG,CAAjB;AACA,IAAIC,aAAa,GAAG,CAApB;AACA,IAAMC,sBAAsB,GAAG,IAAIC,GAAJ,EAA/B;;AAEO,IAAMC,sBAAwC,GAAG,EAAjD,C;AACA,IAAMC,kCAA+D,GAAG,EAAxE,C;;AAEP,IAAIC,4BAAJ,EAAwB;AACtB,MAAMC,UAAmB,GAAG,EAA5B;AACAA,EAAAA,UAAU,CAACC,IAAX,CAAgBC,2BAAhB;AACAF,EAAAA,UAAU,CAACC,IAAX,CAAgBE,qBAAhB;;AAEA,MAAMC,iBAAiB,GAAGC,OAAO,CAACC,OAAR,CAAgB,WAAhB,EAA6B,IAA7B,EAAmC,cAAnC,CAA1B;AACAF,EAAAA,iBAAiB,CAACG,IAAlB,GAAyBC,OAAzB,CAAiC,UAACC,QAAD,EAAc;AAC7C,QAAMC,aAAa,GAAGD,QAAQ,CAACE,WAAT,CAAqB,GAArB,IAA4B,CAAlD;AACA,QAAMC,aAAa,GAAGH,QAAQ,CAACI,SAAT,CAAmBH,aAAnB,EAAkCI,OAAlC,CAA0C,YAA1C,EAAwD,EAAxD,CAAtB;AACA,QAAMC,oBAA8C,GAAG,EAAvD;AACAC,IAAAA,MAAM,CAACT,IAAP,CAAYH,iBAAiB,CAACK,QAAD,CAA7B,EAAyCD,OAAzC,CAAiD,UAACS,UAAD,EAAgB;AAC/D,UAAMC,MAAM,GAAGd,iBAAiB,CAACK,QAAD,CAAjB,CAA4BQ,UAA5B,CAAf;;AAEAD,MAAAA,MAAM,CAACT,IAAP,CAAYW,MAAZ,EAAoBV,OAApB,CAA4B,UAACW,WAAD,EAAiB;AAC3C,YAAMC,OAAO,GAAGF,MAAM,CAACC,WAAD,CAAtB;AACA,YAAI,OAAOC,OAAP,KAAmB,UAAvB,EAAmC;AACjC;AACD;AACD,YAAMC,oBAAoB,GAAG,IAAIzB,GAAJ,EAA7B;AACA,YAAM0B,YAAkC,GAAG,EAA3C;AACA,YAAMC,mBAAmB,GAAGC,eAAe,CAACH,oBAAD,EAAuBC,YAAvB,CAA3C;AACA,YAAMG,MAAM,GAAGzB,UAAU,CAAC0B,GAAX,CAAe,UAACC,CAAD,UAAO,IAAIC,KAAJ,CAAUD,CAAV,EAAaJ,mBAAb,CAAP,EAAf,CAAf;AACAE,QAAAA,MAAM,CAACjB,OAAP,CAAe,UAACmB,CAAD,UAAOP,OAAO,CAACO,CAAD,CAAd,EAAf;;AAEA,YAAME,SAAS,GAAGC,KAAK,CAACC,IAAN,CAAWV,oBAAX,CAAlB;;AAEA,YAAIQ,SAAS,CAACG,MAAV,GAAmB,CAAvB,EAA0B;AACxBjB,UAAAA,oBAAoB,CAACI,WAAD,CAApB,GAAoC,EAAEU,SAAS,EAATA,SAAF,EAAaP,YAAY,EAAZA,YAAb,EAApC;;AAEAO,UAAAA,SAAS,CAACrB,OAAV,CAAkB,UAACyB,YAAD,EAAkB;AAClC,gBAAI,CAACnC,kCAAkC,CAACmC,YAAD,CAAvC,EAAuD;AACrDnC,cAAAA,kCAAkC,CAACmC,YAAD,CAAlC,GAAmD,EAAnD;AACD;;AAED,gBAAMC,YAAY,GAAGpC,kCAAkC,CAACmC,YAAD,CAAvD;AACA,gBAAI,CAACC,YAAY,CAACtB,aAAD,CAAjB,EAAkC;AAChCsB,cAAAA,YAAY,CAACtB,aAAD,CAAZ,GAA8B,EAA9B;AACD;;AAED,gBAAMuB,aAAa,GAAGD,YAAY,CAACtB,aAAD,CAAlC;AACA,gBAAI,CAACuB,aAAa,CAAChB,WAAD,CAAlB,EAAiC;AAC/BgB,cAAAA,aAAa,CAAChB,WAAD,CAAb,GAA6B;AAC3BG,gBAAAA,YAAY,EAAZA,YAD2B;AAE3BO,gBAAAA,SAAS,EAAE,CAACI,YAAD,CAFgB,EAA7B;;AAID,aALD,MAKO,IAAI,CAACE,aAAa,CAAChB,WAAD,CAAb,CAA2BU,SAA3B,CAAqCO,QAArC,CAA8CH,YAA9C,CAAL,EAAkE;AACvEE,cAAAA,aAAa,CAAChB,WAAD,CAAb,CAA2BG,YAA3B,GAA0CA,YAA1C;AACAa,cAAAA,aAAa,CAAChB,WAAD,CAAb,CAA2BU,SAA3B,CAAqC5B,IAArC,CAA0CgC,YAA1C;AACD;;AAED,gBAAMI,gBAAgB,GAAGf,YAAY,CAACW,YAAD,CAArC;AACA,gBAAII,gBAAJ,EAAsB;AACpBA,cAAAA,gBAAgB,CAAC7B,OAAjB,CAAyB,UAAC8B,cAAD,EAAoB;AAC3C,oBAAI,CAACxC,kCAAkC,CAACwC,cAAD,CAAvC,EAAyD;AACvDxC,kBAAAA,kCAAkC,CAACwC,cAAD,CAAlC,GAAqD,EAArD;AACD;;AAED,oBAAMC,cAAc,GAAGzC,kCAAkC,CAACwC,cAAD,CAAzD;AACA,oBAAI,CAACC,cAAc,CAAC3B,aAAD,CAAnB,EAAoC;AAClC2B,kBAAAA,cAAc,CAAC3B,aAAD,CAAd,GAAgCd,kCAAkC,CAACmC,YAAD,CAAlC,CAAiDrB,aAAjD,CAAhC;AACD;AACF,eATD;AAUD;AACF,WAlCD;AAmCD;AACF,OApDD;AAqDD,KAxDD;;AA0DAf,IAAAA,sBAAsB,CAACe,aAAD,CAAtB,GAAwCG,oBAAxC;AACD,GA/DD;AAgED;;AAED,SAASS,eAAT,CAAyBgB,WAAzB,EAAwDlB,YAAxD,EAAiH;AAC/G,MAAImB,WAAW,GAAG,CAAlB;AACA,MAAIC,QAAQ,GAAG,EAAf;AACA,SAAO;AACLC,IAAAA,GADK,eACDC,MADC,EACOC,IADP,EACaC,QADb,EACuB;AAC1B,UAAMC,QAAQ,GAAGF,IAAjB;AACAlD,MAAAA,sBAAsB,CAACqD,GAAvB,CAA2BD,QAA3B;AACA,UAAIN,WAAW,KAAK,CAApB,EAAuB;AACrBC,QAAAA,QAAQ,GAAGK,QAAX;AACAP,QAAAA,WAAW,CAACQ,GAAZ,CAAgBD,QAAhB;AACD,OAHD,MAGO;AACL,YAAI,CAACzB,YAAY,CAACoB,QAAD,CAAjB,EAA6B;AAC3BpB,UAAAA,YAAY,CAACoB,QAAD,CAAZ,GAAyB,CAACK,QAAD,CAAzB;AACD,SAFD,MAEO,IAAI,CAACzB,YAAY,CAACoB,QAAD,CAAZ,CAAuBN,QAAvB,CAAgCW,QAAhC,CAAL,EAAgD;AACrDzB,UAAAA,YAAY,CAACoB,QAAD,CAAZ,CAAuBzC,IAAvB,CAA4B8C,QAA5B;AACD;AACF;AACDN,MAAAA,WAAW;AACX,UAAMQ,KAAK,GAAGC,WAAW,CAACC,GAAZ,EAAd;AACA,UAAMC,MAAM,GAAGC,OAAO,CAACV,GAAR,CAAYC,MAAZ,EAAoBC,IAApB,EAA0BC,QAA1B,CAAf;AACApD,MAAAA,aAAa,IAAIwD,WAAW,CAACC,GAAZ,KAAoBF,KAArC;AACAxD,MAAAA,UAAU;AACVgD,MAAAA,WAAW;AACX,aAAOW,MAAP;AACD,KArBI,EAAP;;AAuBD;;AAEM,IAAME,kBAAkB,GAAGxB,KAAK,CAACC,IAAN,CAAWpC,sBAAX,CAA3B,C;AACA,IAAM4D,WAAW,GAAG9D,UAApB,C;AACA,IAAM+D,cAAc,GAAG9D,aAAvB,C","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { DEFAULT_THEME } from '../../lib/theming/themes/DefaultTheme';\nimport { DARK_THEME } from '../../lib/theming/themes/DarkTheme';\nimport { IS_PROXY_SUPPORTED } from '../../lib/Supports';\n\nexport interface DescriptionsType {\n [componentName: string]: ComponentDescriptionType;\n}\n\nexport interface ComponentDescriptionType {\n [elementName: string]: ComponentRowDescriptionType;\n}\n\nexport interface ComponentRowDescriptionType {\n variables: Array<keyof Theme>;\n dependencies: VariableDependencies;\n}\n\nexport interface VariableNameToComponentsMap {\n [variableName: string]: DescriptionsType;\n}\n\nexport interface VariableDependencies {\n [variableName: string]: Array<keyof Theme>;\n}\n\nlet callsCount = 0;\nlet executionTime = 0;\nconst ALL_USED_VARIABLES_SET = new Set<keyof Theme>();\n\nexport const COMPONENT_DESCRIPTIONS: DescriptionsType = {};\nexport const COMPONENT_DESCRIPTIONS_BY_VARIABLE: VariableNameToComponentsMap = {};\n\nif (IS_PROXY_SUPPORTED) {\n const baseThemes: Theme[] = [];\n baseThemes.push(DEFAULT_THEME);\n baseThemes.push(DARK_THEME);\n\n const componentsContext = require.context('../../../', true, /\\.styles.ts$/);\n componentsContext.keys().forEach((fileName) => {\n const fileNameStart = fileName.lastIndexOf('/') + 1;\n const componentName = fileName.substring(fileNameStart).replace('.styles.ts', '');\n const componentDescription: ComponentDescriptionType = {};\n Object.keys(componentsContext(fileName)).forEach((exportName) => {\n const styles = componentsContext(fileName)[exportName];\n\n Object.keys(styles).forEach((elementName) => {\n const jsStyle = styles[elementName];\n if (typeof jsStyle !== 'function') {\n return;\n }\n const variablesAccumulator = new Set<keyof Theme>();\n const dependencies: VariableDependencies = {};\n const elementProxyHandler = getProxyHandler(variablesAccumulator, dependencies);\n const themes = baseThemes.map((t) => new Proxy(t, elementProxyHandler));\n themes.forEach((t) => jsStyle(t));\n\n const variables = Array.from(variablesAccumulator);\n\n if (variables.length > 0) {\n componentDescription[elementName] = { variables, dependencies };\n\n variables.forEach((variableName) => {\n if (!COMPONENT_DESCRIPTIONS_BY_VARIABLE[variableName]) {\n COMPONENT_DESCRIPTIONS_BY_VARIABLE[variableName] = {};\n }\n\n const variableNode = COMPONENT_DESCRIPTIONS_BY_VARIABLE[variableName];\n if (!variableNode[componentName]) {\n variableNode[componentName] = {};\n }\n\n const componentNode = variableNode[componentName];\n if (!componentNode[elementName]) {\n componentNode[elementName] = {\n dependencies,\n variables: [variableName],\n };\n } else if (!componentNode[elementName].variables.includes(variableName)) {\n componentNode[elementName].dependencies = dependencies;\n componentNode[elementName].variables.push(variableName);\n }\n\n const dependenciesList = dependencies[variableName];\n if (dependenciesList) {\n dependenciesList.forEach((dependencyName) => {\n if (!COMPONENT_DESCRIPTIONS_BY_VARIABLE[dependencyName]) {\n COMPONENT_DESCRIPTIONS_BY_VARIABLE[dependencyName] = {};\n }\n\n const dependencyNode = COMPONENT_DESCRIPTIONS_BY_VARIABLE[dependencyName];\n if (!dependencyNode[componentName]) {\n dependencyNode[componentName] = COMPONENT_DESCRIPTIONS_BY_VARIABLE[variableName][componentName];\n }\n });\n }\n });\n }\n });\n });\n\n COMPONENT_DESCRIPTIONS[componentName] = componentDescription;\n });\n}\n\nfunction getProxyHandler(accumulator: Set<keyof Theme>, dependencies: VariableDependencies): ProxyHandler<Theme> {\n let accessLevel = 0;\n let rootProp = '';\n return {\n get(target, prop, receiver) {\n const propName = prop as keyof Theme;\n ALL_USED_VARIABLES_SET.add(propName);\n if (accessLevel === 0) {\n rootProp = propName;\n accumulator.add(propName);\n } else {\n if (!dependencies[rootProp]) {\n dependencies[rootProp] = [propName];\n } else if (!dependencies[rootProp].includes(propName)) {\n dependencies[rootProp].push(propName);\n }\n }\n accessLevel++;\n const start = performance.now();\n const result = Reflect.get(target, prop, receiver);\n executionTime += performance.now() - start;\n callsCount++;\n accessLevel--;\n return result;\n },\n };\n}\n\nexport const ALL_USED_VARIABLES = Array.from(ALL_USED_VARIABLES_SET);\nexport const CALLS_COUNT = callsCount;\nexport const EXECUTION_TIME = executionTime;\n"]}
|
|
1
|
+
{"version":3,"sources":["VariablesCollector.ts"],"names":["callsCount","executionTime","ALL_USED_VARIABLES_SET","Set","COMPONENT_DESCRIPTIONS","COMPONENT_DESCRIPTIONS_BY_VARIABLE","IS_PROXY_SUPPORTED","baseThemes","push","DEFAULT_THEME","DARK_THEME","componentsContext","require","context","keys","forEach","fileName","fileNameStart","lastIndexOf","componentName","substring","replace","componentDescription","Object","exportName","styles","elementName","jsStyle","variablesAccumulator","dependencies","elementProxyHandler","getProxyHandler","themes","map","t","Proxy","variables","Array","from","length","variableName","variableNode","componentNode","includes","dependenciesList","dependencyName","dependencyNode","accumulator","accessLevel","rootProp","isThemeVariable","theme","name","get","target","prop","receiver","propName","add","start","performance","now","result","Reflect","ALL_USED_VARIABLES","CALLS_COUNT","EXECUTION_TIME"],"mappings":"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","sourcesContent":["import { Theme } from '../../lib/theming/Theme';\nimport { DEFAULT_THEME } from '../../lib/theming/themes/DefaultTheme';\nimport { DARK_THEME } from '../../lib/theming/themes/DarkTheme';\nimport { IS_PROXY_SUPPORTED } from '../../lib/Supports';\n\nexport interface DescriptionsType {\n [componentName: string]: ComponentDescriptionType;\n}\n\nexport interface ComponentDescriptionType {\n [elementName: string]: ComponentRowDescriptionType;\n}\n\nexport interface ComponentRowDescriptionType {\n variables: Array<keyof Theme>;\n dependencies: VariableDependencies;\n}\n\nexport interface VariableNameToComponentsMap {\n [variableName: string]: DescriptionsType;\n}\n\nexport interface VariableDependencies {\n [variableName: string]: Array<keyof Theme>;\n}\n\nlet callsCount = 0;\nlet executionTime = 0;\nconst ALL_USED_VARIABLES_SET = new Set<keyof Theme>();\n\nexport const COMPONENT_DESCRIPTIONS: DescriptionsType = {};\nexport const COMPONENT_DESCRIPTIONS_BY_VARIABLE: VariableNameToComponentsMap = {};\n\nif (IS_PROXY_SUPPORTED) {\n const baseThemes: Theme[] = [];\n baseThemes.push(DEFAULT_THEME);\n baseThemes.push(DARK_THEME);\n\n const componentsContext = require.context('../../../', true, /\\.styles.ts$/);\n componentsContext.keys().forEach((fileName) => {\n const fileNameStart = fileName.lastIndexOf('/') + 1;\n const componentName = fileName.substring(fileNameStart).replace('.styles.ts', '');\n const componentDescription: ComponentDescriptionType = {};\n Object.keys(componentsContext(fileName)).forEach((exportName) => {\n const styles = componentsContext(fileName)[exportName];\n\n Object.keys(styles).forEach((elementName) => {\n const jsStyle = styles[elementName];\n if (typeof jsStyle !== 'function') {\n return;\n }\n const variablesAccumulator = new Set<keyof Theme>();\n const dependencies: VariableDependencies = {};\n const elementProxyHandler = getProxyHandler(variablesAccumulator, dependencies);\n const themes = baseThemes.map((t) => new Proxy(t, elementProxyHandler));\n themes.forEach((t) => jsStyle(t));\n\n const variables = Array.from(variablesAccumulator);\n\n if (variables.length > 0) {\n componentDescription[elementName] = { variables, dependencies };\n\n variables.forEach((variableName) => {\n if (!COMPONENT_DESCRIPTIONS_BY_VARIABLE[variableName]) {\n COMPONENT_DESCRIPTIONS_BY_VARIABLE[variableName] = {};\n }\n\n const variableNode = COMPONENT_DESCRIPTIONS_BY_VARIABLE[variableName];\n if (!variableNode[componentName]) {\n variableNode[componentName] = {};\n }\n\n const componentNode = variableNode[componentName];\n if (!componentNode[elementName]) {\n componentNode[elementName] = {\n dependencies,\n variables: [variableName],\n };\n } else if (!componentNode[elementName].variables.includes(variableName)) {\n componentNode[elementName].dependencies = dependencies;\n componentNode[elementName].variables.push(variableName);\n }\n\n const dependenciesList = dependencies[variableName];\n if (dependenciesList) {\n dependenciesList.forEach((dependencyName) => {\n if (!COMPONENT_DESCRIPTIONS_BY_VARIABLE[dependencyName]) {\n COMPONENT_DESCRIPTIONS_BY_VARIABLE[dependencyName] = {};\n }\n\n const dependencyNode = COMPONENT_DESCRIPTIONS_BY_VARIABLE[dependencyName];\n if (!dependencyNode[componentName]) {\n dependencyNode[componentName] = COMPONENT_DESCRIPTIONS_BY_VARIABLE[variableName][componentName];\n }\n });\n }\n });\n }\n });\n });\n\n COMPONENT_DESCRIPTIONS[componentName] = componentDescription;\n });\n}\n\nfunction getProxyHandler(accumulator: Set<keyof Theme>, dependencies: VariableDependencies): ProxyHandler<Theme> {\n let accessLevel = 0;\n let rootProp = '';\n function isThemeVariable<T extends Theme>(theme: T, name: keyof T) {\n return typeof theme[name] === 'string';\n }\n return {\n get(target, prop, receiver) {\n const propName = prop as keyof Theme;\n if (isThemeVariable(target, propName)) {\n ALL_USED_VARIABLES_SET.add(propName);\n if (accessLevel === 0) {\n rootProp = propName;\n accumulator.add(propName);\n } else {\n if (!dependencies[rootProp]) {\n dependencies[rootProp] = [propName];\n } else if (!dependencies[rootProp].includes(propName)) {\n dependencies[rootProp].push(propName);\n }\n }\n }\n accessLevel++;\n const start = performance.now();\n const result = Reflect.get(target, prop, receiver);\n executionTime += performance.now() - start;\n callsCount++;\n accessLevel--;\n return result;\n },\n };\n}\n\nexport const ALL_USED_VARIABLES = Array.from(ALL_USED_VARIABLES_SET);\nexport const CALLS_COUNT = callsCount;\nexport const EXECUTION_TIME = executionTime;\n"]}
|
|
@@ -56,8 +56,9 @@ var SpinnerIcon = function SpinnerIcon(_ref) {var _cx, _cx2;var size = _ref.size
|
|
|
56
56
|
var _React$useContext = _react.default.useContext(_ThemeContext.ThemeContext),red = _React$useContext.red,yellow = _React$useContext.yellow,green = _React$useContext.green,brand = _React$useContext.brand;
|
|
57
57
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
58
58
|
_react.default.useEffect(function () {
|
|
59
|
+
var svg = svgRef.current;
|
|
60
|
+
|
|
59
61
|
var setStyleProperty = function setStyleProperty() {
|
|
60
|
-
var svg = svgRef.current;
|
|
61
62
|
if (svg) {var _svg$style;
|
|
62
63
|
(_svg$style = svg.style).setProperty.apply(_svg$style, arguments);
|
|
63
64
|
}
|
|
@@ -75,7 +76,6 @@ var SpinnerIcon = function SpinnerIcon(_ref) {var _cx, _cx2;var size = _ref.size
|
|
|
75
76
|
|
|
76
77
|
return function () {
|
|
77
78
|
var fallbackAnimation = fallbackAnimationRef.current;
|
|
78
|
-
var svg = svgRef.current;
|
|
79
79
|
if (fallbackAnimation) {
|
|
80
80
|
fallbackAnimation.stop();
|
|
81
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SpinnerIcon.tsx"],"names":["sizes","big","size","width","radius","normal","mini","SpinnerIcon","className","dimmed","inline","color","currentSize","svgRef","React","useRef","isIE11","isTestEnv","fallbackAnimationRef","useContext","ThemeContext","red","yellow","green","brand","useEffect","
|
|
1
|
+
{"version":3,"sources":["SpinnerIcon.tsx"],"names":["sizes","big","size","width","radius","normal","mini","SpinnerIcon","className","dimmed","inline","color","currentSize","svgRef","React","useRef","isIE11","isTestEnv","fallbackAnimationRef","useContext","ThemeContext","red","yellow","green","brand","useEffect","svg","current","setStyleProperty","style","setProperty","SpinnerFallbackAnimationRunner","fallbackAnimation","stop","removeAttribute","styles","root","rootInline","icon","iconInline"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isIE11 } from '../../lib/client';\nimport {\n SpinnerFallbackAnimationRunner,\n createOffsetAnimation,\n createLengthAnimation,\n createColorAnimation,\n createRotationAnimation,\n} from '../../components/Spinner/SpinnerFallbackAnimation';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './SpinnerIcon.styles';\n\nexport interface SpinnerIconProps {\n className: string;\n size: 'mini' | 'normal' | 'big';\n dimmed?: boolean;\n inline?: boolean;\n width?: number;\n color?: React.CSSProperties['color'];\n}\n\nexport const sizes = {\n big: {\n size: 96,\n width: 4,\n radius: 32,\n },\n normal: {\n size: 48,\n width: 2,\n radius: 16,\n },\n mini: {\n size: 16,\n width: 1.5,\n radius: 6,\n },\n};\n\nexport const SpinnerIcon = ({ size, className, dimmed, inline, width, color }: SpinnerIconProps) => {\n const currentSize = inline ? sizes.mini : sizes[size];\n const svgRef = React.useRef<SVGSVGElement>(null);\n\n if (isIE11 && !isTestEnv) {\n // This condition will not change during app's life time\n // So its OK to use hooks here\n // https://reactjs.org/docs/hooks-rules.html#only-call-hooks-at-the-top-level\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const fallbackAnimationRef = React.useRef<SpinnerFallbackAnimationRunner | null>(null);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const { red, yellow, green, brand } = React.useContext(ThemeContext);\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n const svg = svgRef.current;\n\n const setStyleProperty: CSSStyleDeclaration['setProperty'] = (...args) => {\n if (svg) {\n svg.style.setProperty(...args);\n }\n };\n\n fallbackAnimationRef.current = new SpinnerFallbackAnimationRunner(\n [\n createOffsetAnimation(0, -230, 1000, setStyleProperty, '%'),\n createLengthAnimation([62, 168], [187, 43], 2000, setStyleProperty, '%'),\n createRotationAnimation(0, 360, 2000, setStyleProperty),\n ...(dimmed ? [] : [createColorAnimation([red, yellow, green, brand], 1500, setStyleProperty)]),\n ],\n 1000 / 60,\n );\n\n return () => {\n const fallbackAnimation = fallbackAnimationRef.current;\n if (fallbackAnimation) {\n fallbackAnimation.stop();\n }\n if (svg) {\n svg.removeAttribute('style');\n }\n };\n }, [dimmed, red, yellow, green, brand]);\n }\n\n return (\n <span className={cx(styles.root(), { [styles.rootInline()]: inline })}>\n <svg\n viewBox={`0 0 ${currentSize.size} ${currentSize.size}`}\n className={cx(styles.icon(), className, {\n [styles.iconInline()]: inline,\n })}\n width={currentSize.size}\n height={currentSize.size}\n fill=\"none\"\n stroke={color}\n strokeDasharray={`${(10 * currentSize.radius) / 6}, ${(27 * currentSize.radius) / 6}`}\n strokeDashoffset=\"0\"\n strokeWidth={width || currentSize.width}\n ref={svgRef}\n >\n <circle cx={currentSize.size / 2} cy={currentSize.size / 2} r={currentSize.radius} />\n </svg>\n </span>\n );\n};\n"]}
|
|
@@ -46,13 +46,25 @@ export var DatePicker = rootNode(_class = (_temp = _class2 = /*#__PURE__*/functi
|
|
|
46
46
|
};
|
|
47
47
|
_this.input = null;
|
|
48
48
|
_this.focused = false;
|
|
49
|
-
_this.internalDate = _this.parseValueToDate(_this.props.value);
|
|
50
|
-
_this.minDate = _this.parseValueToDate(_this.props.minDate);
|
|
51
|
-
_this.maxDate = _this.parseValueToDate(_this.props.maxDate);
|
|
52
49
|
|
|
53
50
|
_this.renderMain = function (props) {
|
|
54
51
|
var picker = null;
|
|
55
|
-
var
|
|
52
|
+
var _this$props = _this.props,
|
|
53
|
+
value = _this$props.value,
|
|
54
|
+
minDate = _this$props.minDate,
|
|
55
|
+
maxDate = _this$props.maxDate;
|
|
56
|
+
|
|
57
|
+
var internalDate = _this.parseValueToDate(value);
|
|
58
|
+
|
|
59
|
+
var date = internalDate ? internalDate.toNativeFormat() : null;
|
|
60
|
+
|
|
61
|
+
var parsedMinDate = _this.parseValueToDate(minDate);
|
|
62
|
+
|
|
63
|
+
var formattedMinDate = parsedMinDate && parsedMinDate.toNativeFormat() || undefined;
|
|
64
|
+
|
|
65
|
+
var parsedMaxDate = _this.parseValueToDate(maxDate);
|
|
66
|
+
|
|
67
|
+
var formattedMaxDate = parsedMaxDate && parsedMaxDate.toNativeFormat() || undefined;
|
|
56
68
|
|
|
57
69
|
if (_this.state.opened) {
|
|
58
70
|
picker = /*#__PURE__*/React.createElement(DropdownContainer, {
|
|
@@ -61,8 +73,8 @@ export var DatePicker = rootNode(_class = (_temp = _class2 = /*#__PURE__*/functi
|
|
|
61
73
|
align: _this.props.menuAlign
|
|
62
74
|
}, /*#__PURE__*/React.createElement(Picker, {
|
|
63
75
|
value: date,
|
|
64
|
-
minDate:
|
|
65
|
-
maxDate:
|
|
76
|
+
minDate: formattedMinDate,
|
|
77
|
+
maxDate: formattedMaxDate,
|
|
66
78
|
onPick: _this.handlePick,
|
|
67
79
|
onSelect: _this.handleSelect,
|
|
68
80
|
enableTodayLink: _this.props.enableTodayLink,
|
|
@@ -194,20 +206,12 @@ export var DatePicker = rootNode(_class = (_temp = _class2 = /*#__PURE__*/functi
|
|
|
194
206
|
};
|
|
195
207
|
|
|
196
208
|
_proto.componentDidUpdate = function componentDidUpdate() {
|
|
197
|
-
var
|
|
198
|
-
disabled = _this$props.disabled,
|
|
199
|
-
value = _this$props.value,
|
|
200
|
-
minDate = _this$props.minDate,
|
|
201
|
-
maxDate = _this$props.maxDate;
|
|
209
|
+
var disabled = this.props.disabled;
|
|
202
210
|
var opened = this.state.opened;
|
|
203
211
|
|
|
204
212
|
if (disabled && opened) {
|
|
205
213
|
this.close();
|
|
206
214
|
}
|
|
207
|
-
|
|
208
|
-
this.internalDate = this.parseValueToDate(value);
|
|
209
|
-
this.minDate = this.parseValueToDate(minDate);
|
|
210
|
-
this.maxDate = this.parseValueToDate(maxDate);
|
|
211
215
|
}
|
|
212
216
|
/**
|
|
213
217
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","InternalDate","InternalDateTransformer","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","getRootNode","rootNode","isNonNullable","Picker","styles","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePicker","state","opened","canUseMobileNativeDatePicker","input","focused","internalDate","parseValueToDate","props","value","minDate","maxDate","renderMain","picker","date","toNativeFormat","getParent","menuAlign","undefined","handlePick","handleSelect","enableTodayLink","isHoliday","root","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","width","minWidth","ref","setState","onFocus","close","onBlur","dateShape","blur","month","year","dateToInternalString","isWeekend","dateString","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","setRootNode","validate","checks","NotNull","Native","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","defaultProps","_day","range","order","DMY","separator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"iPAAA,OAAOA,SAAP,MAAsB,YAAtB;AACA,OAAOC,KAAP,MAAkB,OAAlB;;AAEA,SAASC,YAAT,QAA6B,6BAA7B;AACA,SAASC,uBAAT,QAAwC,wCAAxC;AACA,SAASC,YAAT,EAAuBC,YAAvB,QAA2C,0BAA3C;AACA,SAASC,iBAAT,EAA4BC,qBAA5B,EAAmDC,yBAAnD,QAAoF,sBAApF;;;AAGA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,iBAAT,QAAkC,kCAAlC;AACA,SAASC,WAAT,QAA4B,uBAA5B;AACA,SAASC,aAAT,QAAmE,8BAAnE;AACA,SAASC,QAAT,QAAyB,kBAAzB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,WAAT,EAAsBC,QAAtB,QAAoD,oBAApD;AACA,SAASC,aAAT,QAA8B,iBAA9B;;AAEA,SAASC,MAAT,QAAuB,UAAvB;AACA,SAASC,MAAT,QAAuB,qBAAvB;;AAEA,IAAMC,gBAAgB,GAAG;AACvBC,EAAAA,SAAS,EAAE,IADY;AAEvBC,EAAAA,QAAQ,EAAE,IAFa;AAGvBC,EAAAA,OAAO,EAAE,IAHc;AAIvBC,EAAAA,KAAK,EAAE,IAJgB;AAKvBC,EAAAA,IAAI,EAAE,IALiB;AAMvBC,EAAAA,SAAS,EAAE,IANY,EAAzB;;;AASA,OAAO,IAAMC,SAAS,GAAG,GAAlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DP,WAAaC,UAAb,GADCZ,QACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFSa,IAAAA,KApFT,GAoFkC,EAAEC,MAAM,EAAE,KAAV,EAAiBC,4BAA4B,EAAE,KAA/C,EApFlC;;AAsFUC,IAAAA,KAtFV,GAsFoC,IAtFpC;AAuFUC,IAAAA,OAvFV,GAuFoB,KAvFpB;AAwFUC,IAAAA,YAxFV,GAwFwC,MAAKC,gBAAL,CAAsB,MAAKC,KAAL,CAAWC,KAAjC,CAxFxC;AAyFUC,IAAAA,OAzFV,GAyFmC,MAAKH,gBAAL,CAAsB,MAAKC,KAAL,CAAWE,OAAjC,CAzFnC;AA0FUC,IAAAA,OA1FV,GA0FmC,MAAKJ,gBAAL,CAAsB,MAAKC,KAAL,CAAWG,OAAjC,CA1FnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0JSC,IAAAA,UA1JT,GA0JsB,UAACJ,KAAD,EAAqE;AACvF,UAAIK,MAAM,GAAG,IAAb;AACA,UAAMC,IAAI,GAAG,MAAKR,YAAL,GAAoB,MAAKA,YAAL,CAAkBS,cAAlB,EAApB,GAAyD,IAAtE;AACA,UAAI,MAAKd,KAAL,CAAWC,MAAf,EAAuB;AACrBW,QAAAA,MAAM;AACJ,4BAAC,iBAAD,IAAmB,SAAS,EAAE,MAAKG,SAAnC,EAA8C,OAAO,EAAE,CAAvD,EAA0D,KAAK,EAAE,MAAKR,KAAL,CAAWS,SAA5E;AACE,4BAAC,MAAD;AACE,UAAA,KAAK,EAAEH,IADT;AAEE,UAAA,OAAO,EAAG,MAAKJ,OAAL,IAAgB,MAAKA,OAAL,CAAaK,cAAb,EAAjB,IAAmDG,SAF9D;AAGE,UAAA,OAAO,EAAG,MAAKP,OAAL,IAAgB,MAAKA,OAAL,CAAaI,cAAb,EAAjB,IAAmDG,SAH9D;AAIE,UAAA,MAAM,EAAE,MAAKC,UAJf;AAKE,UAAA,QAAQ,EAAE,MAAKC,YALjB;AAME,UAAA,eAAe,EAAE,MAAKZ,KAAL,CAAWa,eAN9B;AAOE,UAAA,SAAS,EAAE,MAAKC,SAPlB,GADF,CADF;;;;AAaD;;AAED;AACE;AACE,UAAA,SAAS,EAAE/B,MAAM,CAACgC,IAAP,EADb;AAEE,UAAA,KAAK,EAAE,MAAKC,YAAL,EAFT;AAGE,UAAA,YAAY,EAAE,MAAKhB,KAAL,CAAWiB,YAH3B;AAIE,UAAA,YAAY,EAAE,MAAKjB,KAAL,CAAWkB,YAJ3B;AAKE,UAAA,WAAW,EAAE,MAAKlB,KAAL,CAAWmB,WAL1B;;AAOE,4BAAC,SAAD;AACM5C,QAAAA,WAAW,CAACyB,KAAD,EAAQhB,gBAAR,CADjB;AAEE,UAAA,GAAG,EAAE,MAAKoC,WAFZ;AAGE,UAAA,KAAK,EAAE,MAAKpB,KAAL,CAAWC,KAAX,IAAoB,EAH7B;AAIE,UAAA,KAAK,EAAC,MAJR;AAKE,UAAA,QAAQ,MALV;AAME,UAAA,OAAO,EAAE,MAAKD,KAAL,CAAWE,OANtB;AAOE,UAAA,OAAO,EAAE,MAAKF,KAAL,CAAWG,OAPtB;AAQE,UAAA,MAAM,EAAE,MAAKkB,UARf;AASE,UAAA,OAAO,EAAE,MAAKC,WAThB;AAUE,UAAA,aAAa,EAAE,MAAKtB,KAAL,CAAWuB,aAV5B,IAPF;;AAmBG,cAAK9B,KAAL,CAAWE,4BAAX;AACC,4BAAC,eAAD;AACE,UAAA,aAAa,EAAE,MAAKK,KAAL,CAAWuB,aAD5B;AAEE,UAAA,KAAK,EAAE,MAAKvB,KAAL,CAAWC,KAAX,IAAoB,EAF7B;AAGE,UAAA,OAAO,EAAE,MAAKD,KAAL,CAAWE,OAHtB;AAIE,UAAA,OAAO,EAAE,MAAKF,KAAL,CAAWG,OAJtB;AAKE,UAAA,QAAQ,EAAE,MAAKH,KAAL,CAAWd,QALvB,GApBJ;;;AA4BG,SAAC,MAAKO,KAAL,CAAWE,4BAAZ,IAA4CU,MA5B/C,CADF;;;AAgCD,KA7MH;;AA+MSG,IAAAA,SA/MT,GA+MqB,YAAM;AACvB,aAAO7B,WAAW,+BAAlB;AACD,KAjNH;;AAmNUqC,IAAAA,YAnNV,GAmNyB,YAAM;AAC3B,UAAQQ,KAAR,GAAkB,MAAKxB,KAAvB,CAAQwB,KAAR;AACA,aAAO3C,aAAa,CAAC2C,KAAD,CAAb,GAAuB,EAAEA,KAAK,EAALA,KAAF,EAAvB,GAAmC,EAAEC,QAAQ,EAAElC,SAAZ,EAA1C;AACD,KAtNH;;AAwNU6B,IAAAA,WAxNV,GAwNwB,UAACM,GAAD,EAA2B;AAC/C,YAAK9B,KAAL,GAAa8B,GAAb;AACD,KA1NH;;;;;;;;;;;;;AAuOUJ,IAAAA,WAvOV,GAuOwB,YAAM;AAC1B,UAAI,MAAKzB,OAAT,EAAkB;AAChB;AACD;;AAED,YAAKA,OAAL,GAAe,IAAf;;AAEA,YAAK8B,QAAL,CAAc,EAAEjC,MAAM,EAAE,IAAV,EAAd;;AAEA,UAAI,MAAKM,KAAL,CAAW4B,OAAf,EAAwB;AACtB,cAAK5B,KAAL,CAAW4B,OAAX;AACD;AACF,KAnPH;;AAqPUP,IAAAA,UArPV,GAqPuB,YAAM;AACzB,UAAI,CAAC,MAAKxB,OAAV,EAAmB;AACjB;AACD;;AAED,YAAKA,OAAL,GAAe,KAAf;AACA,YAAKgC,KAAL;;AAEA,UAAI,MAAK7B,KAAL,CAAW8B,MAAf,EAAuB;AACrB,cAAK9B,KAAL,CAAW8B,MAAX;AACD;AACF,KAhQH;;AAkQUnB,IAAAA,UAlQV,GAkQuB,UAACoB,SAAD,EAAkC;AACrD,YAAKnB,YAAL,CAAkBmB,SAAlB;AACA,YAAKC,IAAL;AACD,KArQH;;AAuQUpB,IAAAA,YAvQV,GAuQyB,gBAA8C,KAA3CN,IAA2C,QAA3CA,IAA2C,CAArC2B,KAAqC,QAArCA,KAAqC,CAA9BC,IAA8B,QAA9BA,IAA8B;AACnE,UAAMjC,KAAK,GAAGlC,uBAAuB,CAACoE,oBAAxB,CAA6C,EAAE7B,IAAI,EAAJA,IAAF,EAAQ2B,KAAK,EAAEA,KAAK,GAAG,CAAvB,EAA0BC,IAAI,EAAJA,IAA1B,EAA7C,CAAd;AACA,UAAI,MAAKlC,KAAL,CAAWuB,aAAf,EAA8B;AAC5B,cAAKvB,KAAL,CAAWuB,aAAX,CAAyBtB,KAAzB;AACD;AACF,KA5QH;;AA8QUa,IAAAA,SA9QV,GA8QsB,iBAAkF,KAA/ER,IAA+E,SAA/EA,IAA+E,CAAzE2B,KAAyE,SAAzEA,KAAyE,CAAlEC,IAAkE,SAAlEA,IAAkE,CAA5DE,SAA4D,SAA5DA,SAA4D;AACpG,UAAMC,UAAU,GAAGtE,uBAAuB,CAACoE,oBAAxB,CAA6C,EAAE7B,IAAI,EAAJA,IAAF,EAAQ2B,KAAK,EAAEA,KAAK,GAAG,CAAvB,EAA0BC,IAAI,EAAJA,IAA1B,EAA7C,CAAnB;AACA,aAAO,MAAKlC,KAAL,CAAWc,SAAX,CAAqBuB,UAArB,EAAiCD,SAAjC,CAAP;AACD,KAjRH,wDA6FSE,iBA7FT,GA6FE,6BAA2B,CACzB,IAAI,KAAKtC,KAAL,CAAWuC,yBAAX,IAAwC9D,QAA5C,EAAsD,CACpD,KAAKkD,QAAL,CAAc,EACZhC,4BAA4B,EAAE,IADlB,EAAd,EAGD,CACD,IAAI,KAAKK,KAAL,CAAWf,SAAf,EAA0B,CACxB,KAAKuD,KAAL,GACD,CACF,CAtGH,QAwGSC,kBAxGT,GAwGE,8BAA4B,CAC1B,kBAA8C,KAAKzC,KAAnD,CAAQd,QAAR,eAAQA,QAAR,CAAkBe,KAAlB,eAAkBA,KAAlB,CAAyBC,OAAzB,eAAyBA,OAAzB,CAAkCC,OAAlC,eAAkCA,OAAlC,CACA,IAAQT,MAAR,GAAmB,KAAKD,KAAxB,CAAQC,MAAR,CACA,IAAIR,QAAQ,IAAIQ,MAAhB,EAAwB,CACtB,KAAKmC,KAAL,GACD,CACD,KAAK/B,YAAL,GAAoB,KAAKC,gBAAL,CAAsBE,KAAtB,CAApB,CACA,KAAKC,OAAL,GAAe,KAAKH,gBAAL,CAAsBG,OAAtB,CAAf,CACA,KAAKC,OAAL,GAAe,KAAKJ,gBAAL,CAAsBI,OAAtB,CAAf,CACD,CAjHH,CAmHE;AACF;AACA,KArHA,QAsHS6B,IAtHT,GAsHE,gBAAc,CACZ,IAAI,KAAKpC,KAAT,EAAgB,CACd,KAAKA,KAAL,CAAWoC,IAAX,GACD,CACD,KAAKX,UAAL,GACD,CA3HH,CA6HE;AACF;AACA,KA/HA,QAgISmB,KAhIT,GAgIE,iBAAe,CACb,IAAI,KAAKxC,KAAL,CAAWd,QAAf,EAAyB,CACvB,OACD,CACD,IAAI,KAAKU,KAAT,EAAgB,CACd,KAAKA,KAAL,CAAW4C,KAAX,GACD,CACD,KAAKlB,WAAL,GACD,CAxIH,CA0IE;AACF;AACA;AACA,KA7IA,QA8ISO,KA9IT,GA8IE,iBAAe,CACb,KAAKF,QAAL,CAAc,EAAEjC,MAAM,EAAE,KAAV,EAAd,EACD,CAhJH,QAkJSgD,MAlJT,GAkJE,kBAAgB,CACd,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKC,WAAjC,IAAkD,KAAK3C,KAAvD,GACG,KAAKI,UADR,CADF,CAKD,CAxJH,QA4NUL,gBA5NV,GA4NE,0BAAyBE,KAAzB,EAA6E,CAC3E,IAAIA,KAAK,KAAKS,SAAV,IAAuBT,KAAK,KAAK,IAArC,EAA2C,CACzC,OAAOS,SAAP,CACD,CACD,IAAMJ,IAAI,GAAG,IAAIxC,YAAJ,CAAiB,EAAEmC,KAAK,EAALA,KAAF,EAAjB,CAAb,CACA,IAAIK,IAAI,CAACsC,QAAL,CAAc,EAAEC,MAAM,EAAE,CAACzE,yBAAyB,CAAC0E,OAA3B,EAAoC1E,yBAAyB,CAAC2E,MAA9D,CAAV,EAAd,CAAJ,EAAsG,CACpG,OAAOzC,IAAP,CACD,CACD,OAAOI,SAAP,CACD,CArOH,qBAAgC7C,KAAK,CAACmF,aAAtC,WACgBC,mBADhB,GACsC,YADtC,UAGgBC,SAHhB,GAG4B,EACxBjE,SAAS,EAAErB,SAAS,CAACuF,IADG,EAGxBjE,QAAQ,EAAEtB,SAAS,CAACuF,IAHI,EAKxB;AACJ;AACA,KACItC,eAAe,EAAEjD,SAAS,CAACuF,IARH,EAUxB/D,KAAK,EAAExB,SAAS,CAACuF,IAVO,EAYxB;AACJ;AACA,KACIhD,OAAO,EAAEvC,SAAS,CAACwF,MAAV,CAAiBC,UAfF,EAiBxB5C,SAAS,EAAE7C,SAAS,CAAC0F,KAAV,CAAgB,CAAC,MAAD,EAAS,OAAT,CAAhB,CAjBa,EAmBxB;AACJ;AACA,KACIpD,OAAO,EAAEtC,SAAS,CAACwF,MAAV,CAAiBC,UAtBF,EAwBxB;AACJ;AACA,KACIpD,KAAK,EAAErC,SAAS,CAACwF,MA3BO,EA6BxBjE,OAAO,EAAEvB,SAAS,CAACuF,IA7BK,EA+BxB3B,KAAK,EAAE5D,SAAS,CAAC2F,SAAV,CAAoB,CAAC3F,SAAS,CAAC4F,MAAX,EAAmB5F,SAAS,CAACwF,MAA7B,CAApB,EAA0DC,UA/BzC,EAiCxBvB,MAAM,EAAElE,SAAS,CAAC6F,IAjCM,EAmCxBlC,aAAa,EAAE3D,SAAS,CAAC6F,IAAV,CAAeJ,UAnCN,EAqCxBzB,OAAO,EAAEhE,SAAS,CAAC6F,IArCK,EAuCxBnE,SAAS,EAAE1B,SAAS,CAAC6F,IAvCG,EAyCxBxC,YAAY,EAAErD,SAAS,CAAC6F,IAzCA,EA2CxBvC,YAAY,EAAEtD,SAAS,CAAC6F,IA3CA,EA6CxBtC,WAAW,EAAEvD,SAAS,CAAC6F,IA7CC,EA+CxB3C,SAAS,EAAElD,SAAS,CAAC6F,IAAV,CAAeJ,UA/CF,EAH5B,UAqDgBK,YArDhB,GAqD+B,EAC3BxD,OAAO,EAAEjC,YADkB,EAE3BkC,OAAO,EAAEnC,YAFkB,EAG3B8C,SAAS,EAAE,mBAAC6C,IAAD,EAAwBvB,SAAxB,UAA+CA,SAA/C,EAHgB,EArD/B,UA2DgBQ,QA3DhB,GA2D2B,UAAC3C,KAAD,EAA0B2D,KAA1B,EAAiF,KAAvDA,KAAuD,cAAvDA,KAAuD,GAAP,EAAO,EACxG,IAAI,CAAC3D,KAAL,EAAY,CACV,OAAO,KAAP,CACD,CAED,aAA2D2D,KAA3D,yBAAQ1D,OAAR,CAAQA,OAAR,+BAAkBjC,YAAlB,0CAAgCkC,OAAhC,CAAgCA,OAAhC,+BAA0CnC,YAA1C,kBACA,IAAM8B,YAAY,GAAG,IAAIhC,YAAJ,CAAiB,EACpC+F,KAAK,EAAE3F,iBAAiB,CAAC4F,GADW,EAEpCC,SAAS,EAAE5F,qBAAqB,CAAC6F,GAFG,EAAjB,EAIlBC,aAJkB,CAIJ,IAAInG,YAAJ,CAAiB,EAAEmC,KAAK,EAAEC,OAAT,EAAjB,CAJI,EAKlBgE,WALkB,CAKN,IAAIpG,YAAJ,CAAiB,EAAEmC,KAAK,EAAEE,OAAT,EAAjB,CALM,EAMlBgE,UANkB,CAMPlE,KANO,CAArB,CAQA,OAAOH,YAAY,CAAC8C,QAAb,CAAsB,EAC3BC,MAAM,EAAE,CACNzE,yBAAyB,CAAC0E,OADpB,EAEN1E,yBAAyB,CAACgG,MAFpB,EAGNhG,yBAAyB,CAAC2E,MAHpB,EAIN3E,yBAAyB,CAACiG,MAJpB,EAKNjG,yBAAyB,CAACkG,KALpB,CADmB,EAAtB,CAAP,CASD,CAlFH","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { CalendarDateShape } from '../../internal/Calendar';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { Picker } from './Picker';\nimport { styles } from './DatePicker.styles';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps<T> extends CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n enableTodayLink?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n minDate: T;\n maxDate: T;\n menuAlign?: 'left' | 'right';\n size?: 'small' | 'medium' | 'large';\n value?: T | null;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: T) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {T} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday: (day: T, isWeekend: boolean) => boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n}\n\ntype DatePickerValue = string;\n\n@rootNode\nexport class DatePicker extends React.PureComponent<DatePickerProps<DatePickerValue>, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right'] as Array<'left' | 'right'>),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func.isRequired,\n };\n\n public static defaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n isHoliday: (_day: DatePickerValue, isWeekend: boolean) => isWeekend,\n };\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false };\n\n private input: DateInput | null = null;\n private focused = false;\n private internalDate?: InternalDate = this.parseValueToDate(this.props.value);\n private minDate?: InternalDate = this.parseValueToDate(this.props.minDate);\n private maxDate?: InternalDate = this.parseValueToDate(this.props.maxDate);\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled, value, minDate, maxDate } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n this.internalDate = this.parseValueToDate(value);\n this.minDate = this.parseValueToDate(minDate);\n this.maxDate = this.parseValueToDate(maxDate);\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => {\n let picker = null;\n const date = this.internalDate ? this.internalDate.toNativeFormat() : null;\n if (this.state.opened) {\n picker = (\n <DropdownContainer getParent={this.getParent} offsetY={2} align={this.props.menuAlign}>\n <Picker\n value={date}\n minDate={(this.minDate && this.minDate.toNativeFormat()) || undefined}\n maxDate={(this.maxDate && this.maxDate.toNativeFormat()) || undefined}\n onPick={this.handlePick}\n onSelect={this.handleSelect}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.isHoliday}\n />\n </DropdownContainer>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private parseValueToDate(value?: Nullable<string>): InternalDate | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date;\n }\n return undefined;\n }\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handlePick = (dateShape: CalendarDateShape) => {\n this.handleSelect(dateShape);\n this.blur();\n };\n\n private handleSelect = ({ date, month, year }: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n return this.props.isHoliday(dateString, isWeekend);\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["DatePicker.tsx"],"names":["PropTypes","React","InternalDate","InternalDateTransformer","MAX_FULLDATE","MIN_FULLDATE","InternalDateOrder","InternalDateSeparator","InternalDateValidateCheck","DateInput","DropdownContainer","filterProps","CommonWrapper","isMobile","NativeDateInput","getRootNode","rootNode","isNonNullable","Picker","styles","INPUT_PASS_PROPS","autoFocus","disabled","warning","error","size","onKeyDown","MIN_WIDTH","DatePicker","state","opened","canUseMobileNativeDatePicker","input","focused","renderMain","props","picker","value","minDate","maxDate","internalDate","parseValueToDate","date","toNativeFormat","parsedMinDate","formattedMinDate","undefined","parsedMaxDate","formattedMaxDate","getParent","menuAlign","handlePick","handleSelect","enableTodayLink","isHoliday","root","getRootStyle","onMouseEnter","onMouseLeave","onMouseOver","getInputRef","handleBlur","handleFocus","onValueChange","width","minWidth","ref","setState","onFocus","close","onBlur","dateShape","blur","month","year","dateToInternalString","isWeekend","dateString","componentDidMount","useMobileNativeDatePicker","focus","componentDidUpdate","render","setRootNode","validate","checks","NotNull","Native","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","isRequired","oneOf","oneOfType","number","func","defaultProps","_day","range","order","DMY","separator","Dot","setRangeStart","setRangeEnd","parseValue","Number","Limits","Range"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { InternalDate } from '../../lib/date/InternalDate';\nimport { InternalDateTransformer } from '../../lib/date/InternalDateTransformer';\nimport { MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants';\nimport { InternalDateOrder, InternalDateSeparator, InternalDateValidateCheck } from '../../lib/date/types';\nimport { Nullable } from '../../typings/utility-types';\nimport { CalendarDateShape } from '../../internal/Calendar';\nimport { DateInput } from '../DateInput';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { isMobile } from '../../lib/client';\nimport { NativeDateInput } from '../../internal/NativeDateInput';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isNonNullable } from '../../lib/utils';\n\nimport { Picker } from './Picker';\nimport { styles } from './DatePicker.styles';\n\nconst INPUT_PASS_PROPS = {\n autoFocus: true,\n disabled: true,\n warning: true,\n error: true,\n size: true,\n onKeyDown: true,\n};\n\nexport const MIN_WIDTH = 120;\n\nexport interface DatePickerProps<T> extends CommonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n enableTodayLink?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n minDate: T;\n maxDate: T;\n menuAlign?: 'left' | 'right';\n size?: 'small' | 'medium' | 'large';\n value?: T | null;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: number | string;\n onBlur?: () => void;\n /**\n * Вызывается при изменении `value`\n *\n * @param value - строка в формате `dd.mm.yyyy`.\n */\n onValueChange: (value: T) => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<any>) => void;\n onMouseEnter?: (e: React.MouseEvent<any>) => void;\n onMouseLeave?: (e: React.MouseEvent<any>) => void;\n onMouseOver?: (e: React.MouseEvent<any>) => void;\n /**\n * Использовать на мобильных устройствах нативный календарь для выбора дат.\n *\n * - На iOS нативный календарь не умеет работать с minDate и maxDate\n */\n useMobileNativeDatePicker?: boolean;\n\n /**\n * Функция для определения праздничных дней\n * @default (_day, isWeekend) => isWeekend\n * @param {T} day - строка в формате `dd.mm.yyyy`\n * @param {boolean} isWeekend - флаг выходного (суббота или воскресенье)\n *\n * @returns {boolean} `true` для выходного или `false` для рабочего дня\n */\n isHoliday: (day: T, isWeekend: boolean) => boolean;\n}\n\nexport interface DatePickerState {\n opened: boolean;\n canUseMobileNativeDatePicker: boolean;\n}\n\ntype DatePickerValue = string;\n\n@rootNode\nexport class DatePicker extends React.PureComponent<DatePickerProps<DatePickerValue>, DatePickerState> {\n public static __KONTUR_REACT_UI__ = 'DatePicker';\n\n public static propTypes = {\n autoFocus: PropTypes.bool,\n\n disabled: PropTypes.bool,\n\n /**\n * Включает кнопку сегодня в календаре\n */\n enableTodayLink: PropTypes.bool,\n\n error: PropTypes.bool,\n\n /**\n * Максимальная дата в календаре.\n */\n maxDate: PropTypes.string.isRequired,\n\n menuAlign: PropTypes.oneOf(['left', 'right'] as Array<'left' | 'right'>),\n\n /**\n * Минимальная дата в календаре.\n */\n minDate: PropTypes.string.isRequired,\n\n /**\n * Строка формата `dd.mm.yyyy`\n */\n value: PropTypes.string,\n\n warning: PropTypes.bool,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n\n onBlur: PropTypes.func,\n\n onValueChange: PropTypes.func.isRequired,\n\n onFocus: PropTypes.func,\n\n onKeyDown: PropTypes.func,\n\n onMouseEnter: PropTypes.func,\n\n onMouseLeave: PropTypes.func,\n\n onMouseOver: PropTypes.func,\n\n isHoliday: PropTypes.func.isRequired,\n };\n\n public static defaultProps = {\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n isHoliday: (_day: DatePickerValue, isWeekend: boolean) => isWeekend,\n };\n\n public static validate = (value: Nullable<string>, range: { minDate?: string; maxDate?: string } = {}) => {\n if (!value) {\n return false;\n }\n\n const { minDate = MIN_FULLDATE, maxDate = MAX_FULLDATE } = range;\n const internalDate = new InternalDate({\n order: InternalDateOrder.DMY,\n separator: InternalDateSeparator.Dot,\n })\n .setRangeStart(new InternalDate({ value: minDate }))\n .setRangeEnd(new InternalDate({ value: maxDate }))\n .parseValue(value);\n\n return internalDate.validate({\n checks: [\n InternalDateValidateCheck.NotNull,\n InternalDateValidateCheck.Number,\n InternalDateValidateCheck.Native,\n InternalDateValidateCheck.Limits,\n InternalDateValidateCheck.Range,\n ],\n });\n };\n\n public state: DatePickerState = { opened: false, canUseMobileNativeDatePicker: false };\n\n private input: DateInput | null = null;\n private focused = false;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.useMobileNativeDatePicker && isMobile) {\n this.setState({\n canUseMobileNativeDatePicker: true,\n });\n }\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate() {\n const { disabled } = this.props;\n const { opened } = this.state;\n if (disabled && opened) {\n this.close();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n if (this.input) {\n this.input.blur();\n }\n this.handleBlur();\n }\n\n /**\n * @public\n */\n public focus() {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.focus();\n }\n this.handleFocus();\n }\n\n /**\n * Закрывает выпадашку выбора дня\n * @public\n */\n public close() {\n this.setState({ opened: false });\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }\n\n public renderMain = (props: CommonWrapperRestProps<DatePickerProps<DatePickerValue>>) => {\n let picker = null;\n\n const { value, minDate, maxDate } = this.props;\n\n const internalDate = this.parseValueToDate(value);\n const date = internalDate ? internalDate.toNativeFormat() : null;\n\n const parsedMinDate = this.parseValueToDate(minDate);\n const formattedMinDate = (parsedMinDate && parsedMinDate.toNativeFormat()) || undefined;\n\n const parsedMaxDate = this.parseValueToDate(maxDate);\n const formattedMaxDate = (parsedMaxDate && parsedMaxDate.toNativeFormat()) || undefined;\n\n if (this.state.opened) {\n picker = (\n <DropdownContainer getParent={this.getParent} offsetY={2} align={this.props.menuAlign}>\n <Picker\n value={date}\n minDate={formattedMinDate}\n maxDate={formattedMaxDate}\n onPick={this.handlePick}\n onSelect={this.handleSelect}\n enableTodayLink={this.props.enableTodayLink}\n isHoliday={this.isHoliday}\n />\n </DropdownContainer>\n );\n }\n\n return (\n <label\n className={styles.root()}\n style={this.getRootStyle()}\n onMouseEnter={this.props.onMouseEnter}\n onMouseLeave={this.props.onMouseLeave}\n onMouseOver={this.props.onMouseOver}\n >\n <DateInput\n {...filterProps(props, INPUT_PASS_PROPS)}\n ref={this.getInputRef}\n value={this.props.value || ''}\n width=\"100%\"\n withIcon\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onValueChange={this.props.onValueChange}\n />\n {this.state.canUseMobileNativeDatePicker && (\n <NativeDateInput\n onValueChange={this.props.onValueChange}\n value={this.props.value || ''}\n minDate={this.props.minDate}\n maxDate={this.props.maxDate}\n disabled={this.props.disabled}\n />\n )}\n {!this.state.canUseMobileNativeDatePicker && picker}\n </label>\n );\n };\n\n public getParent = () => {\n return getRootNode(this);\n };\n\n private getRootStyle = () => {\n const { width } = this.props;\n return isNonNullable(width) ? { width } : { minWidth: MIN_WIDTH };\n };\n\n private getInputRef = (ref: DateInput | null) => {\n this.input = ref;\n };\n\n private parseValueToDate(value?: Nullable<string>): InternalDate | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const date = new InternalDate({ value });\n if (date.validate({ checks: [InternalDateValidateCheck.NotNull, InternalDateValidateCheck.Native] })) {\n return date;\n }\n return undefined;\n }\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n\n this.focused = true;\n\n this.setState({ opened: true });\n\n if (this.props.onFocus) {\n this.props.onFocus();\n }\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n return;\n }\n\n this.focused = false;\n this.close();\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handlePick = (dateShape: CalendarDateShape) => {\n this.handleSelect(dateShape);\n this.blur();\n };\n\n private handleSelect = ({ date, month, year }: CalendarDateShape) => {\n const value = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private isHoliday = ({ date, month, year, isWeekend }: CalendarDateShape & { isWeekend: boolean }) => {\n const dateString = InternalDateTransformer.dateToInternalString({ date, month: month + 1, year });\n return this.props.isHoliday(dateString, isWeekend);\n };\n}\n"]}
|
|
@@ -100,9 +100,6 @@ export declare class DatePicker extends React.PureComponent<DatePickerProps<Date
|
|
|
100
100
|
state: DatePickerState;
|
|
101
101
|
private input;
|
|
102
102
|
private focused;
|
|
103
|
-
private internalDate?;
|
|
104
|
-
private minDate?;
|
|
105
|
-
private maxDate?;
|
|
106
103
|
private setRootNode;
|
|
107
104
|
componentDidMount(): void;
|
|
108
105
|
componentDidUpdate(): void;
|
|
@@ -2,7 +2,7 @@ import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitial
|
|
|
2
2
|
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import FocusLock from 'react-focus-lock';
|
|
5
|
-
import
|
|
5
|
+
import throttle from 'lodash.throttle';
|
|
6
6
|
import { isKeyEscape } from "../../../lib/events/keyboard/identifiers";
|
|
7
7
|
import * as LayoutEvents from "../../../lib/LayoutEvents";
|
|
8
8
|
import { RenderContainer } from "../../../internal/RenderContainer";
|