goblin-gadgets 3.2.2 → 3.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/.editorconfig +9 -9
  2. package/.eslintrc.js +28 -28
  3. package/.zou-flow +2 -2
  4. package/builders/builders.js +5 -5
  5. package/builders/gadget.js +85 -85
  6. package/calendar-boards-gadget.js +64 -64
  7. package/demo-gadget.js +17 -17
  8. package/glyphs-dialog.js +13 -13
  9. package/login-dialog.js +13 -13
  10. package/package.json +46 -46
  11. package/pivot-gadget.js +18 -18
  12. package/stack-navigation.js +13 -13
  13. package/table-gadget.js +102 -102
  14. package/test/code-parser.spec.js +61 -61
  15. package/tree-gadget.js +70 -70
  16. package/types/types.js +455 -455
  17. package/widgets/accordion/styles.js +16 -16
  18. package/widgets/accordion/widget.js +90 -90
  19. package/widgets/analog-clock/props.js +102 -102
  20. package/widgets/analog-clock/scenarios.js +43 -43
  21. package/widgets/analog-clock/styles.js +754 -754
  22. package/widgets/analog-clock/widget.js +404 -404
  23. package/widgets/animated-container/animations.js +566 -566
  24. package/widgets/animated-container/styles.js +36 -36
  25. package/widgets/animated-container/widget.js +24 -24
  26. package/widgets/badge/styles.js +107 -107
  27. package/widgets/badge/widget.js +33 -33
  28. package/widgets/button/props.js +377 -377
  29. package/widgets/button/scenarios.js +54 -54
  30. package/widgets/button/styles.js +1082 -1082
  31. package/widgets/button/widget.js +426 -426
  32. package/widgets/button-combo/styles.js +73 -73
  33. package/widgets/button-combo/widget.js +297 -297
  34. package/widgets/calendar/props.js +207 -207
  35. package/widgets/calendar/scenarios.js +50 -50
  36. package/widgets/calendar/styles.js +198 -198
  37. package/widgets/calendar/widget.js +895 -895
  38. package/widgets/calendar-boards/styles.js +29 -29
  39. package/widgets/calendar-boards/widget.js +215 -215
  40. package/widgets/calendar-button/styles.js +273 -273
  41. package/widgets/calendar-button/widget.js +94 -94
  42. package/widgets/calendar-list/styles.js +35 -35
  43. package/widgets/calendar-list/widget.js +223 -223
  44. package/widgets/calendar-recurrence/widget.js +183 -183
  45. package/widgets/carousel/props.js +104 -104
  46. package/widgets/carousel/scenarios.js +163 -163
  47. package/widgets/carousel/styles.js +133 -133
  48. package/widgets/carousel/widget.js +491 -491
  49. package/widgets/carousel-bullet/styles.js +29 -29
  50. package/widgets/carousel-bullet/widget.js +25 -25
  51. package/widgets/carousel-button/styles.js +71 -71
  52. package/widgets/carousel-button/widget.js +33 -33
  53. package/widgets/carousel-item/styles.js +21 -21
  54. package/widgets/carousel-item/widget.js +24 -24
  55. package/widgets/chat-balloon/props.js +65 -65
  56. package/widgets/chat-balloon/scenarios.js +47 -47
  57. package/widgets/chat-balloon/styles.js +193 -193
  58. package/widgets/chat-balloon/widget.js +62 -62
  59. package/widgets/chat-dialog/styles.js +15 -15
  60. package/widgets/chat-dialog/widget.js +62 -62
  61. package/widgets/check-list/styles.js +66 -66
  62. package/widgets/check-list/widget.js +168 -168
  63. package/widgets/checkbox/widget.js +15 -15
  64. package/widgets/checkbox-nc/props.js +191 -191
  65. package/widgets/checkbox-nc/scenarios.js +41 -41
  66. package/widgets/checkbox-nc/styles.js +122 -122
  67. package/widgets/checkbox-nc/widget.js +116 -116
  68. package/widgets/clock-combo/styles.js +174 -174
  69. package/widgets/clock-combo/widget.js +390 -390
  70. package/widgets/color-picker/props.js +145 -145
  71. package/widgets/color-picker/scenarios.js +34 -34
  72. package/widgets/color-picker/styles.js +209 -209
  73. package/widgets/color-picker/widget.js +735 -735
  74. package/widgets/colored-container/props.js +34 -34
  75. package/widgets/colored-container/scenarios.js +54 -54
  76. package/widgets/colored-container/styles.js +100 -100
  77. package/widgets/colored-container/widget.js +27 -27
  78. package/widgets/combo/styles.js +69 -69
  79. package/widgets/combo/widget.js +224 -224
  80. package/widgets/combo-container/styles.js +66 -66
  81. package/widgets/combo-container/widget.js +188 -188
  82. package/widgets/command-button/widget.js +39 -39
  83. package/widgets/container/props.js +295 -295
  84. package/widgets/container/scenarios.js +47 -47
  85. package/widgets/container/styles.js +1439 -1439
  86. package/widgets/container/widget.js +279 -279
  87. package/widgets/demo/widget.js +24 -24
  88. package/widgets/dialog/styles.js +29 -29
  89. package/widgets/dialog/widget.js +26 -26
  90. package/widgets/dialog-modal/props.js +126 -126
  91. package/widgets/dialog-modal/styles.js +234 -234
  92. package/widgets/dialog-modal/widget.js +273 -273
  93. package/widgets/dialog-resizable/props.js +1 -1
  94. package/widgets/dialog-resizable/scenarios.js +18 -18
  95. package/widgets/dialog-resizable/widget.js +367 -367
  96. package/widgets/dialog-resizable-nc/props.js +150 -150
  97. package/widgets/dialog-resizable-nc/scenarios.js +18 -18
  98. package/widgets/dialog-resizable-nc/styles.js +259 -259
  99. package/widgets/dialog-resizable-nc/widget.js +197 -197
  100. package/widgets/directory-input/widget.js +18 -18
  101. package/widgets/directory-input-nc/widget.js +20 -20
  102. package/widgets/document-container/getPath.js +43 -43
  103. package/widgets/document-container/props.js +79 -79
  104. package/widgets/document-container/scenarios.js +39 -39
  105. package/widgets/document-container/styles.js +69 -69
  106. package/widgets/document-container/widget.js +53 -53
  107. package/widgets/drag-cab/styles.js +56 -56
  108. package/widgets/drag-cab/widget.js +285 -285
  109. package/widgets/drag-carrier/styles.js +21 -21
  110. package/widgets/drag-carrier/widget.js +780 -780
  111. package/widgets/dynamic-toolbar/styles.js +110 -110
  112. package/widgets/dynamic-toolbar/widget.js +128 -128
  113. package/widgets/field/readonly/label.js +39 -39
  114. package/widgets/field/widget.js +1743 -1743
  115. package/widgets/file-input/widget.js +18 -18
  116. package/widgets/file-input-nc/styles.js +38 -38
  117. package/widgets/file-input-nc/widget.js +88 -88
  118. package/widgets/flat-combo/styles.js +21 -21
  119. package/widgets/flat-combo/widget.js +61 -61
  120. package/widgets/flat-list/styles.js +30 -30
  121. package/widgets/flat-list/widget.js +219 -219
  122. package/widgets/flying-balloon/styles.js +52 -52
  123. package/widgets/flying-balloon/widget.js +43 -43
  124. package/widgets/fragment/widget.js +26 -26
  125. package/widgets/full-screen/props.js +27 -27
  126. package/widgets/full-screen/styles.js +32 -32
  127. package/widgets/full-screen/widget.js +40 -40
  128. package/widgets/gauge/props.js +71 -71
  129. package/widgets/gauge/scenarios.js +83 -83
  130. package/widgets/gauge/styles.js +183 -183
  131. package/widgets/gauge/widget.js +36 -36
  132. package/widgets/glyph-detail/service.js +9 -9
  133. package/widgets/glyph-detail/widget.js +109 -109
  134. package/widgets/glyphs-dialog/service.js +94 -94
  135. package/widgets/glyphs-dialog/styles.js +37 -37
  136. package/widgets/glyphs-dialog/widget.js +236 -236
  137. package/widgets/goblin-editor/widget.js +146 -146
  138. package/widgets/guild-entry/props.js +53 -53
  139. package/widgets/guild-entry/scenarios.js +26 -26
  140. package/widgets/guild-entry/styles.js +98 -98
  141. package/widgets/guild-entry/widget.js +126 -126
  142. package/widgets/guild-user-logo/guild-helpers.js +77 -77
  143. package/widgets/guild-user-logo/props.js +48 -48
  144. package/widgets/guild-user-logo/scenarios.js +64 -64
  145. package/widgets/guild-user-logo/styles.js +114 -114
  146. package/widgets/guild-user-logo/widget.js +81 -81
  147. package/widgets/guild-user-profile/props.js +73 -73
  148. package/widgets/guild-user-profile/scenarios.js +54 -54
  149. package/widgets/guild-user-profile/styles.js +162 -162
  150. package/widgets/guild-user-profile/widget.js +202 -202
  151. package/widgets/helpers/combo-helpers.js +218 -218
  152. package/widgets/helpers/geom-helpers.js +80 -80
  153. package/widgets/helpers/rect-helpers.js +10 -10
  154. package/widgets/helpers/shortcut-helpers.js +56 -56
  155. package/widgets/helpers/spacing-helpers.js +26 -26
  156. package/widgets/helpers/svg-helpers.js +151 -151
  157. package/widgets/helpers/table-helpers.js +68 -68
  158. package/widgets/hinter/styles.js +79 -79
  159. package/widgets/hinter/widget.js +205 -205
  160. package/widgets/hinter-column/widget.js +49 -49
  161. package/widgets/hinter-field/reducer.js +18 -18
  162. package/widgets/hinter-field/widget.js +176 -176
  163. package/widgets/hinter-field-nc/props.js +114 -114
  164. package/widgets/hinter-field-nc/scenarios.js +47 -47
  165. package/widgets/hinter-field-nc/widget.js +191 -191
  166. package/widgets/input-wrapper/widget.js +157 -157
  167. package/widgets/key-trap.js +96 -96
  168. package/widgets/label/props.js +1 -1
  169. package/widgets/label/scenarios.js +1 -1
  170. package/widgets/label/widget.js +7 -7
  171. package/widgets/label-nc/props.js +308 -308
  172. package/widgets/label-nc/scenarios.js +29 -29
  173. package/widgets/label-nc/styles.js +1218 -1218
  174. package/widgets/label-nc/widget.js +314 -314
  175. package/widgets/label-row/props.js +1 -1
  176. package/widgets/label-row/scenarios.js +1 -1
  177. package/widgets/label-row/widget.js +7 -7
  178. package/widgets/label-row-nc/props.js +94 -94
  179. package/widgets/label-row-nc/scenarios.js +46 -46
  180. package/widgets/label-row-nc/widget.js +81 -81
  181. package/widgets/label-text-field/styles.js +55 -55
  182. package/widgets/label-text-field/widget.js +178 -178
  183. package/widgets/launcher/props.js +177 -177
  184. package/widgets/launcher/scenarios.js +55 -55
  185. package/widgets/launcher/styles.js +46 -46
  186. package/widgets/launcher/widget.js +79 -79
  187. package/widgets/launcher-blob/props.js +25 -25
  188. package/widgets/launcher-blob/scenarios.js +24 -24
  189. package/widgets/launcher-blob/styles.js +62 -62
  190. package/widgets/launcher-blob/widget.js +50 -50
  191. package/widgets/list/widget.js +211 -211
  192. package/widgets/login-dialog/service.js +117 -117
  193. package/widgets/login-dialog/widget.js +117 -117
  194. package/widgets/map/reaflet.js +208 -208
  195. package/widgets/map/widget.js +67 -67
  196. package/widgets/markdown/styles.js +85 -85
  197. package/widgets/markdown/widget.js +31 -31
  198. package/widgets/notification/styles.js +97 -97
  199. package/widgets/notification/widget.js +207 -207
  200. package/widgets/pivot/custom.css +320 -320
  201. package/widgets/pivot/widget.js +42 -42
  202. package/widgets/radio-list/styles.js +48 -48
  203. package/widgets/radio-list/widget.js +111 -111
  204. package/widgets/resizable-container/styles.js +108 -108
  205. package/widgets/resizable-container/widget.js +225 -225
  206. package/widgets/retro-action-button/helpers.js +106 -106
  207. package/widgets/retro-action-button/styles.js +285 -285
  208. package/widgets/retro-action-button/widget.js +364 -364
  209. package/widgets/retro-badge-button/styles.js +87 -87
  210. package/widgets/retro-badge-button/widget.js +251 -251
  211. package/widgets/retro-gear/helpers.js +156 -156
  212. package/widgets/retro-gear/styles.js +130 -130
  213. package/widgets/retro-gear/widget.js +51 -51
  214. package/widgets/retro-illuminated-button/styles.js +274 -274
  215. package/widgets/retro-illuminated-button/widget.js +147 -147
  216. package/widgets/retro-panel/helpers.js +57 -57
  217. package/widgets/retro-panel/styles.js +293 -293
  218. package/widgets/retro-panel/widget.js +239 -239
  219. package/widgets/retro-screw/styles.js +80 -80
  220. package/widgets/retro-screw/widget.js +25 -25
  221. package/widgets/rocket/props.js +124 -124
  222. package/widgets/rocket/scenarios.js +71 -71
  223. package/widgets/rocket/styles.js +306 -306
  224. package/widgets/rocket/widget.js +225 -225
  225. package/widgets/samples-monitor/helpers.js +147 -147
  226. package/widgets/samples-monitor/styles.js +529 -529
  227. package/widgets/samples-monitor/widget.js +516 -516
  228. package/widgets/scrollable-container/styles.js +58 -58
  229. package/widgets/scrollable-container/widget.js +132 -132
  230. package/widgets/scrollable-linkable-container/reducer.js +18 -18
  231. package/widgets/scrollable-linkable-container/styles.js +42 -42
  232. package/widgets/scrollable-linkable-container/widget.js +78 -78
  233. package/widgets/select/styles.js +68 -68
  234. package/widgets/select/widget.js +119 -119
  235. package/widgets/separator/props.js +46 -46
  236. package/widgets/separator/styles.js +116 -116
  237. package/widgets/separator/widget.js +27 -27
  238. package/widgets/slider/props.js +136 -136
  239. package/widgets/slider/scenarios.js +74 -74
  240. package/widgets/slider/styles.js +246 -246
  241. package/widgets/slider/widget.js +404 -404
  242. package/widgets/slider-circle/props.js +72 -72
  243. package/widgets/slider-circle/scenarios.js +16 -16
  244. package/widgets/slider-circle/styles.js +78 -78
  245. package/widgets/slider-circle/widget.js +154 -154
  246. package/widgets/slider-xy/props.js +87 -87
  247. package/widgets/slider-xy/scenarios.js +19 -19
  248. package/widgets/slider-xy/styles.js +102 -102
  249. package/widgets/slider-xy/widget.js +234 -234
  250. package/widgets/smiley/props.js +51 -51
  251. package/widgets/smiley/scenarios.js +58 -58
  252. package/widgets/smiley/styles.js +489 -489
  253. package/widgets/smiley/widget.js +72 -72
  254. package/widgets/spinner/props.js +31 -31
  255. package/widgets/spinner/scenarios.js +31 -31
  256. package/widgets/spinner/styles.js +49 -49
  257. package/widgets/spinner/widget.js +23 -23
  258. package/widgets/splitter/props.js +71 -71
  259. package/widgets/splitter/scenarios.js +182 -182
  260. package/widgets/splitter/styles.js +41 -41
  261. package/widgets/splitter/widget.js +455 -455
  262. package/widgets/stack-navigation/service.js +324 -324
  263. package/widgets/stack-navigation/widget.js +296 -296
  264. package/widgets/state-browser/styles.js +19 -19
  265. package/widgets/state-browser/widget.js +135 -135
  266. package/widgets/state-browser-dialog/styles.js +100 -100
  267. package/widgets/state-browser-dialog/widget.js +253 -253
  268. package/widgets/state-monitor/styles.js +50 -50
  269. package/widgets/state-monitor/widget.js +324 -324
  270. package/widgets/switch-on-off/props.js +30 -30
  271. package/widgets/switch-on-off/scenarios.js +34 -34
  272. package/widgets/switch-on-off/styles.js +63 -63
  273. package/widgets/switch-on-off/widget.js +41 -41
  274. package/widgets/table/helpers.js +160 -160
  275. package/widgets/table/props.js +658 -658
  276. package/widgets/table/reducer.js +196 -196
  277. package/widgets/table/scenarios.js +54 -54
  278. package/widgets/table/widget.js +253 -253
  279. package/widgets/table-cell/props.js +145 -145
  280. package/widgets/table-cell/styles.js +160 -160
  281. package/widgets/table-cell/widget.js +139 -139
  282. package/widgets/table-header-drag-manager/styles.js +184 -184
  283. package/widgets/table-header-drag-manager/widget.js +392 -392
  284. package/widgets/table-nc/styles.js +100 -100
  285. package/widgets/table-nc/widget.js +409 -409
  286. package/widgets/table-row/props.js +73 -73
  287. package/widgets/table-row/styles.js +82 -82
  288. package/widgets/table-row/widget.js +207 -207
  289. package/widgets/text-field/widget.js +18 -18
  290. package/widgets/text-field-combo/widget.js +21 -21
  291. package/widgets/text-field-combo-nc/props.js +300 -300
  292. package/widgets/text-field-combo-nc/scenarios.js +72 -72
  293. package/widgets/text-field-combo-nc/widget.js +339 -339
  294. package/widgets/text-field-date-interval/styles.js +37 -37
  295. package/widgets/text-field-date-interval/widget.js +162 -162
  296. package/widgets/text-field-nc/props.js +40 -40
  297. package/widgets/text-field-nc/scenarios.js +67 -67
  298. package/widgets/text-field-nc/widget.js +14 -14
  299. package/widgets/text-field-time-interval/styles.js +37 -37
  300. package/widgets/text-field-time-interval/widget.js +160 -160
  301. package/widgets/text-field-typed/widget.js +51 -51
  302. package/widgets/text-field-typed-nc/props.js +81 -81
  303. package/widgets/text-field-typed-nc/scenarios.js +105 -105
  304. package/widgets/text-field-typed-nc/styles.js +20 -20
  305. package/widgets/text-field-typed-nc/widget.js +749 -750
  306. package/widgets/text-input-info-nc/props.js +62 -62
  307. package/widgets/text-input-info-nc/widget.js +55 -55
  308. package/widgets/text-input-nc/props.js +143 -143
  309. package/widgets/text-input-nc/scenarios.js +44 -44
  310. package/widgets/text-input-nc/styles.js +242 -242
  311. package/widgets/text-input-nc/widget.js +234 -234
  312. package/widgets/ticket/getPath.js +128 -128
  313. package/widgets/ticket/props.js +181 -181
  314. package/widgets/ticket/scenarios.js +39 -39
  315. package/widgets/ticket/styles.js +332 -332
  316. package/widgets/ticket/ticket-helpers.js +33 -33
  317. package/widgets/ticket/widget.js +348 -348
  318. package/widgets/ticket-hover/styles.js +207 -207
  319. package/widgets/ticket-hover/widget.js +53 -53
  320. package/widgets/time-gauge/widget.js +64 -64
  321. package/widgets/tips/styles.js +48 -48
  322. package/widgets/tips/widget.js +171 -171
  323. package/widgets/translatable-text-field/styles.js +202 -202
  324. package/widgets/translatable-text-field/text-field.js +132 -132
  325. package/widgets/translatable-text-field/widget.js +660 -660
  326. package/widgets/tree/props.js +246 -246
  327. package/widgets/tree/scenarios.js +14 -14
  328. package/widgets/tree/styles.js +142 -142
  329. package/widgets/tree/widget.js +383 -383
  330. package/widgets/tree-cell/styles.js +140 -140
  331. package/widgets/tree-cell/widget.js +100 -100
  332. package/widgets/tree-row/styles.js +77 -77
  333. package/widgets/tree-row/widget.js +135 -135
  334. package/widgets/triangle/props.js +48 -48
  335. package/widgets/triangle/scenarios.js +33 -33
  336. package/widgets/triangle/styles.js +92 -92
  337. package/widgets/triangle/widget.js +36 -36
  338. package/widgets/well-done/widget.js +170 -170
  339. package/widgets/widget-doc/reducer.js +68 -68
  340. package/widgets/widget-doc/styles.js +15 -15
  341. package/widgets/widget-doc/widget-list.js +25 -25
  342. package/widgets/widget-doc/widget.js +89 -89
  343. package/widgets/widget-doc-menu/styles.js +12 -12
  344. package/widgets/widget-doc-menu/widget.js +79 -79
  345. package/widgets/widget-doc-preview/parse-code.js +20 -20
  346. package/widgets/widget-doc-preview/styles.js +77 -77
  347. package/widgets/widget-doc-preview/widget.js +481 -481
  348. package/widgets/widget-doc-preview-container/styles.js +60 -60
  349. package/widgets/widget-doc-preview-container/widget.js +129 -129
  350. package/widgets/widget-doc-properties/styles.js +41 -41
  351. package/widgets/widget-doc-properties/widget.js +307 -307
  352. package/widgets/widget-doc-property/styles.js +75 -75
  353. package/widgets/widget-doc-property/widget.js +108 -108
  354. package/widgets/widget-doc-property-control/styles.js +14 -14
  355. package/widgets/widget-doc-property-control/widget.js +343 -343
  356. package/widgets/wizard/service.js +2132 -2132
  357. package/widgets/wizard/styles.js +21 -21
  358. package/widgets/wizard/widget.js +927 -927
  359. package/widgets/work-dialog/styles.js +31 -31
  360. package/widgets/work-dialog/widget.js +162 -162
  361. package/wizard.js +13 -13
@@ -1,306 +1,306 @@
1
- import {Unit} from 'goblin-theme';
2
- const px = Unit.toPx;
3
- const n = Unit.toValue;
4
-
5
- /******************************************************************************/
6
-
7
- export const propNames = [
8
- 'size',
9
- 'kind',
10
- 'shadow',
11
- 'iconShadow',
12
- 'disabled',
13
- 'crossed',
14
- 'background',
15
- 'backgroundHover',
16
- 'startedCount',
17
- 'totalCount',
18
- 'additionalAnimation',
19
- ];
20
-
21
- export default function styles(theme, props) {
22
- const {
23
- size = '200px',
24
- kind = 'default',
25
- shadow = 'none',
26
- iconShadow = 'none',
27
- disabled = false,
28
- crossed = false,
29
- background = 'red',
30
- backgroundHover = 'orange',
31
- startedCount = 0,
32
- totalCount = 0,
33
- additionalAnimation = 'none',
34
- } = props;
35
-
36
- const s = n(size);
37
- const hover =
38
- !disabled && !crossed && (!totalCount || startedCount < totalCount);
39
-
40
- const rr1 = px(s / 20);
41
- const rr2 = px(s / 5);
42
- const m = px(s / 20);
43
- const mb = px(s / 1.8);
44
-
45
- const rs1 = {
46
- none: px(0),
47
- light: px(s / 13),
48
- deep: px(s / 10),
49
- strong: px(0),
50
- }[shadow];
51
-
52
- const rs2 = {
53
- none: px(0),
54
- light: px(s / 7.7),
55
- deep: px(s / 6.2),
56
- strong: px(s / 10),
57
- }[shadow];
58
-
59
- const rs3 = {
60
- none: px(0),
61
- light: px(0),
62
- deep: px(s / 100),
63
- strong: px(s / 40),
64
- }[shadow];
65
-
66
- const rs4 = {
67
- none: 0,
68
- light: 0.5,
69
- deep: 1,
70
- strong: 1,
71
- }[shadow];
72
-
73
- const rocket = {
74
- 'position': 'relative',
75
- 'width': size,
76
- 'height': size,
77
- 'display': 'flex',
78
- 'flexDirection': 'column',
79
- 'justifyContent': 'center',
80
- 'alignSelf': 'center',
81
- 'margin': `0px ${m} ${mb} ${m}`,
82
- 'transformOrigin': 'bottom',
83
- 'transition': disabled
84
- ? null
85
- : 'background 0.5s ease-in-out, margin 0.5s ease-in-out, transform 0.5s ease-in-out, opacity 0.5s ease-in-out',
86
- ':hover .box-hover': {
87
- background: hover ? backgroundHover : null,
88
- transform: hover ? 'scale(1.05)' : null,
89
- },
90
- ':hover .gear-hover': {
91
- transition: 'cubic-bezier(0.37, 3.43, 0.55, 1) 0.4s',
92
- opacity: 1,
93
- transform: 'scale(1)',
94
- },
95
- };
96
-
97
- const box = {
98
- position: 'absolute',
99
- top: 0,
100
- bottom: 0,
101
- left: 0,
102
- right: 0,
103
- borderRadius: kind === 'toy' ? rr2 : rr1,
104
- boxShadow: shadow ? `0px ${rs1} ${rs2} ${rs3} rgba(0,0,0,${rs4})` : null,
105
- background: background,
106
- cursor: disabled ? null : 'pointer',
107
- transition: disabled ? null : 'transform 0.2s ease-in-out',
108
- };
109
-
110
- const icon = {
111
- position: 'absolute',
112
- top: px(s * 0.15),
113
- width: px(s * 0.5),
114
- height: px(s * 0.5),
115
- alignSelf: 'center',
116
- opacity: disabled ? 0.4 : 1,
117
- };
118
-
119
- const glyph = {
120
- position: 'absolute',
121
- top: px(s * 0.15),
122
- left: '0px',
123
- right: '0px',
124
- height: px(s * 0.5),
125
- display: 'flex',
126
- opacity: disabled ? 0.4 : 1,
127
- };
128
-
129
- const iconSvg = {
130
- position: 'absolute',
131
- };
132
-
133
- const is1 = px(s / 4);
134
- const is2 = px(s / 5);
135
- const is3 = iconShadow === 'light' ? 0.4 : 0.8;
136
-
137
- const iconShadowStyle = {
138
- display: iconShadow === 'none' ? 'none' : null,
139
- position: 'absolute',
140
- left: '50%',
141
- right: '50%',
142
- top: '50%',
143
- bottom: '50%',
144
- boxShadow: `0px 0px ${is1} ${is2} rgba(0,0,0,${is3})`,
145
- };
146
-
147
- const title = {
148
- position: 'absolute',
149
- left: '0px',
150
- right: '0px',
151
- bottom: px(s * 0.15),
152
- // opacity: disabled ? 0.2 : 1,
153
- };
154
-
155
- const subtitle = {
156
- position: 'absolute',
157
- left: '0px',
158
- right: '0px',
159
- bottom: px(s * 0.06),
160
- // opacity: disabled ? 0.2 : 1,
161
- };
162
-
163
- const gauge = {
164
- position: 'absolute',
165
- left: '0px',
166
- right: '0px',
167
- bottom: px(s * -0.1),
168
- };
169
-
170
- const ratio = {
171
- position: 'absolute',
172
- left: '0px',
173
- right: '0px',
174
- bottom: px(s * -0.25),
175
- };
176
-
177
- const crossedStyle = {
178
- position: 'absolute',
179
- left: px(s * -0.15),
180
- right: px(s * -0.15),
181
- top: px(s * 0.45),
182
- bottom: px(s * 0.45),
183
- transform: 'rotate(-45deg)',
184
- backgroundColor: 'red',
185
- borderRadius: px(s * 0.05),
186
- boxShadow: `0px ${px(s * 0.05)} ${px(s * 0.1)} 0px black`,
187
- };
188
-
189
- const gear = {
190
- position: 'absolute',
191
- left: '50%',
192
- top: '50%',
193
- pointerEvents: 'none',
194
- transition: 'cubic-bezier(0.55, 0, 0.9, 0.45) 2.0s',
195
- opacity: 0,
196
- transform: 'scale(0.5)',
197
- };
198
-
199
- let transition, additionnalAnimation, additionnalAnimationName;
200
- if (additionalAnimation === 'parkinson') {
201
- const keyframes = {
202
- '0%': {transform: 'translate(0%, 0%) rotate(0deg)'},
203
- '5%': {transform: 'translate(-0.5%, 0.2%) rotate(1deg)'},
204
- '10%': {transform: 'translate(1%, -0.5%) rotate(0deg)'},
205
- '15%': {transform: 'translate(0.3%, 0%) rotate(-0.5deg)'},
206
- '20%': {transform: 'translate(-1.2%, 0.8%) rotate(0.2deg)'},
207
- '25%': {transform: 'translate(0.4%, -0.2%) rotate(-0.7deg)'},
208
- '30%': {transform: 'translate(1.2%, 0.2%) rotate(0deg)'},
209
- '35%': {transform: 'translate(-0.2%, 0%) rotate(0.3deg)'},
210
- '40%': {transform: 'translate(0.9%, 0%) rotate(1deg)'},
211
- '45%': {transform: 'translate(1.2%, 0.5%) rotate(0.4deg)'},
212
- '50%': {transform: 'translate(-1%, 0%) rotate(-0.6deg)'},
213
- '55%': {transform: 'translate(0%, 0.4%) rotate(0deg)'},
214
- '60%': {transform: 'translate(0.6%, 0%) rotate(-0.5deg)'},
215
- '65%': {transform: 'translate(1.2%, -0.3%) rotate(0.3deg)'},
216
- '70%': {transform: 'translate(0.7%, 0.6%) rotate(0.7deg)'},
217
- '75%': {transform: 'translate(-0.4%, -0.2%) rotate(-0.2deg)'},
218
- '80%': {transform: 'translate(1%, 0%) rotate(-1deg)'},
219
- '85%': {transform: 'translate(-0.6%, 0%) rotate(0.7deg)'},
220
- '90%': {transform: 'translate(0%, 0.4%) rotate(0.2deg)'},
221
- '95%': {transform: 'translate(1%, 0.2%) rotate(0.5deg)'},
222
- '100%': {transform: 'translate(-0.5%, -0.6%) rotate(0deg)'},
223
- };
224
- additionnalAnimation = '1s ease-in-out infinite reverse';
225
- additionnalAnimationName = keyframes;
226
- } else if (additionalAnimation === 'zoom') {
227
- const keyframes = {
228
- '0%': {transform: 'scale(1)'},
229
- '90%': {transform: 'scale(1.2)'},
230
- '100%': {transform: 'scale(1)'},
231
- };
232
- transition = '0.1 ease-out';
233
- additionnalAnimation = '0.6s ease-in-out infinite';
234
- additionnalAnimationName = keyframes;
235
- } else if (additionalAnimation === 'shift') {
236
- const keyframes = {
237
- '0%': {transform: 'translateX(0%)'},
238
- '25%': {transform: 'translateX(-5%)'},
239
- '50%': {transform: 'translateX(0%)'},
240
- '75%': {transform: 'translateX(5%)'},
241
- '100%': {transform: 'translateX(0%)'},
242
- };
243
- transition = '0.1 ease-out';
244
- additionnalAnimation = '0.4s ease-in-out infinite';
245
- additionnalAnimationName = keyframes;
246
- } else if (additionalAnimation === 'dancing') {
247
- const keyframes = {
248
- '0%': {transform: 'rotate(4deg) translate(0%, 0%)'},
249
- '10%': {transform: 'rotate(-4deg) translate(2%, -1%)'},
250
- '20%': {transform: 'rotate(4deg) translate(-1%, 2%)'},
251
- '30%': {transform: 'rotate(-4deg) translate(0%, -2%)'},
252
- '40%': {transform: 'rotate(4deg) translate(2%, 0%)'},
253
- '50%': {transform: 'rotate(-4deg) translate(-1%, 1%)'},
254
- '60%': {transform: 'rotate(4deg) translate(1%, -2%)'},
255
- '70%': {transform: 'rotate(-4deg) translate(-2%, 1%)'},
256
- '80%': {transform: 'rotate(4deg) translate(2%, -1%)'},
257
- '90%': {transform: 'rotate(-4deg) translate(-1%, 2%)'},
258
- '100%': {transform: 'rotate(4deg) translate(0%, 0%)'},
259
- };
260
- transition = '0.3 ease-out';
261
- additionnalAnimation = '1.2s ease-in-out infinite reverse';
262
- additionnalAnimationName = keyframes;
263
- }
264
-
265
- const additional = {
266
- 'zIndex': 1,
267
- 'position': 'absolute',
268
- 'left': '0px',
269
- 'right': '0px',
270
- 'bottom': px(s * -0.45),
271
- 'height': px(s * 0.4),
272
- 'borderRadius': kind === 'toy' ? rr2 : rr1,
273
- 'boxShadow': shadow ? `0px ${rs1} ${rs2} ${rs3} rgba(0,0,0,${rs4})` : null,
274
- 'background': background,
275
- 'display': 'flex',
276
- 'flexDirection': 'row',
277
- 'justifyContent': 'center',
278
- 'alignSelf': 'center',
279
- 'cursor': disabled ? null : 'pointer',
280
- 'transition': transition,
281
- ':hover': {
282
- animation: additionnalAnimation,
283
- animationName: additionnalAnimationName,
284
- },
285
- };
286
-
287
- /******************************************************************************/
288
-
289
- return {
290
- rocket,
291
- box,
292
- icon,
293
- iconSvg,
294
- iconShadow: iconShadowStyle,
295
- glyph,
296
- title,
297
- subtitle,
298
- gauge,
299
- ratio,
300
- crossed: crossedStyle,
301
- gear,
302
- additional,
303
- };
304
- }
305
-
306
- /******************************************************************************/
1
+ import {Unit} from 'goblin-theme';
2
+ const px = Unit.toPx;
3
+ const n = Unit.toValue;
4
+
5
+ /******************************************************************************/
6
+
7
+ export const propNames = [
8
+ 'size',
9
+ 'kind',
10
+ 'shadow',
11
+ 'iconShadow',
12
+ 'disabled',
13
+ 'crossed',
14
+ 'background',
15
+ 'backgroundHover',
16
+ 'startedCount',
17
+ 'totalCount',
18
+ 'additionalAnimation',
19
+ ];
20
+
21
+ export default function styles(theme, props) {
22
+ const {
23
+ size = '200px',
24
+ kind = 'default',
25
+ shadow = 'none',
26
+ iconShadow = 'none',
27
+ disabled = false,
28
+ crossed = false,
29
+ background = 'red',
30
+ backgroundHover = 'orange',
31
+ startedCount = 0,
32
+ totalCount = 0,
33
+ additionalAnimation = 'none',
34
+ } = props;
35
+
36
+ const s = n(size);
37
+ const hover =
38
+ !disabled && !crossed && (!totalCount || startedCount < totalCount);
39
+
40
+ const rr1 = px(s / 20);
41
+ const rr2 = px(s / 5);
42
+ const m = px(s / 20);
43
+ const mb = px(s / 1.8);
44
+
45
+ const rs1 = {
46
+ none: px(0),
47
+ light: px(s / 13),
48
+ deep: px(s / 10),
49
+ strong: px(0),
50
+ }[shadow];
51
+
52
+ const rs2 = {
53
+ none: px(0),
54
+ light: px(s / 7.7),
55
+ deep: px(s / 6.2),
56
+ strong: px(s / 10),
57
+ }[shadow];
58
+
59
+ const rs3 = {
60
+ none: px(0),
61
+ light: px(0),
62
+ deep: px(s / 100),
63
+ strong: px(s / 40),
64
+ }[shadow];
65
+
66
+ const rs4 = {
67
+ none: 0,
68
+ light: 0.5,
69
+ deep: 1,
70
+ strong: 1,
71
+ }[shadow];
72
+
73
+ const rocket = {
74
+ 'position': 'relative',
75
+ 'width': size,
76
+ 'height': size,
77
+ 'display': 'flex',
78
+ 'flexDirection': 'column',
79
+ 'justifyContent': 'center',
80
+ 'alignSelf': 'center',
81
+ 'margin': `0px ${m} ${mb} ${m}`,
82
+ 'transformOrigin': 'bottom',
83
+ 'transition': disabled
84
+ ? null
85
+ : 'background 0.5s ease-in-out, margin 0.5s ease-in-out, transform 0.5s ease-in-out, opacity 0.5s ease-in-out',
86
+ ':hover .box-hover': {
87
+ background: hover ? backgroundHover : null,
88
+ transform: hover ? 'scale(1.05)' : null,
89
+ },
90
+ ':hover .gear-hover': {
91
+ transition: 'cubic-bezier(0.37, 3.43, 0.55, 1) 0.4s',
92
+ opacity: 1,
93
+ transform: 'scale(1)',
94
+ },
95
+ };
96
+
97
+ const box = {
98
+ position: 'absolute',
99
+ top: 0,
100
+ bottom: 0,
101
+ left: 0,
102
+ right: 0,
103
+ borderRadius: kind === 'toy' ? rr2 : rr1,
104
+ boxShadow: shadow ? `0px ${rs1} ${rs2} ${rs3} rgba(0,0,0,${rs4})` : null,
105
+ background: background,
106
+ cursor: disabled ? null : 'pointer',
107
+ transition: disabled ? null : 'transform 0.2s ease-in-out',
108
+ };
109
+
110
+ const icon = {
111
+ position: 'absolute',
112
+ top: px(s * 0.15),
113
+ width: px(s * 0.5),
114
+ height: px(s * 0.5),
115
+ alignSelf: 'center',
116
+ opacity: disabled ? 0.4 : 1,
117
+ };
118
+
119
+ const glyph = {
120
+ position: 'absolute',
121
+ top: px(s * 0.15),
122
+ left: '0px',
123
+ right: '0px',
124
+ height: px(s * 0.5),
125
+ display: 'flex',
126
+ opacity: disabled ? 0.4 : 1,
127
+ };
128
+
129
+ const iconSvg = {
130
+ position: 'absolute',
131
+ };
132
+
133
+ const is1 = px(s / 4);
134
+ const is2 = px(s / 5);
135
+ const is3 = iconShadow === 'light' ? 0.4 : 0.8;
136
+
137
+ const iconShadowStyle = {
138
+ display: iconShadow === 'none' ? 'none' : null,
139
+ position: 'absolute',
140
+ left: '50%',
141
+ right: '50%',
142
+ top: '50%',
143
+ bottom: '50%',
144
+ boxShadow: `0px 0px ${is1} ${is2} rgba(0,0,0,${is3})`,
145
+ };
146
+
147
+ const title = {
148
+ position: 'absolute',
149
+ left: '0px',
150
+ right: '0px',
151
+ bottom: px(s * 0.15),
152
+ // opacity: disabled ? 0.2 : 1,
153
+ };
154
+
155
+ const subtitle = {
156
+ position: 'absolute',
157
+ left: '0px',
158
+ right: '0px',
159
+ bottom: px(s * 0.06),
160
+ // opacity: disabled ? 0.2 : 1,
161
+ };
162
+
163
+ const gauge = {
164
+ position: 'absolute',
165
+ left: '0px',
166
+ right: '0px',
167
+ bottom: px(s * -0.1),
168
+ };
169
+
170
+ const ratio = {
171
+ position: 'absolute',
172
+ left: '0px',
173
+ right: '0px',
174
+ bottom: px(s * -0.25),
175
+ };
176
+
177
+ const crossedStyle = {
178
+ position: 'absolute',
179
+ left: px(s * -0.15),
180
+ right: px(s * -0.15),
181
+ top: px(s * 0.45),
182
+ bottom: px(s * 0.45),
183
+ transform: 'rotate(-45deg)',
184
+ backgroundColor: 'red',
185
+ borderRadius: px(s * 0.05),
186
+ boxShadow: `0px ${px(s * 0.05)} ${px(s * 0.1)} 0px black`,
187
+ };
188
+
189
+ const gear = {
190
+ position: 'absolute',
191
+ left: '50%',
192
+ top: '50%',
193
+ pointerEvents: 'none',
194
+ transition: 'cubic-bezier(0.55, 0, 0.9, 0.45) 2.0s',
195
+ opacity: 0,
196
+ transform: 'scale(0.5)',
197
+ };
198
+
199
+ let transition, additionnalAnimation, additionnalAnimationName;
200
+ if (additionalAnimation === 'parkinson') {
201
+ const keyframes = {
202
+ '0%': {transform: 'translate(0%, 0%) rotate(0deg)'},
203
+ '5%': {transform: 'translate(-0.5%, 0.2%) rotate(1deg)'},
204
+ '10%': {transform: 'translate(1%, -0.5%) rotate(0deg)'},
205
+ '15%': {transform: 'translate(0.3%, 0%) rotate(-0.5deg)'},
206
+ '20%': {transform: 'translate(-1.2%, 0.8%) rotate(0.2deg)'},
207
+ '25%': {transform: 'translate(0.4%, -0.2%) rotate(-0.7deg)'},
208
+ '30%': {transform: 'translate(1.2%, 0.2%) rotate(0deg)'},
209
+ '35%': {transform: 'translate(-0.2%, 0%) rotate(0.3deg)'},
210
+ '40%': {transform: 'translate(0.9%, 0%) rotate(1deg)'},
211
+ '45%': {transform: 'translate(1.2%, 0.5%) rotate(0.4deg)'},
212
+ '50%': {transform: 'translate(-1%, 0%) rotate(-0.6deg)'},
213
+ '55%': {transform: 'translate(0%, 0.4%) rotate(0deg)'},
214
+ '60%': {transform: 'translate(0.6%, 0%) rotate(-0.5deg)'},
215
+ '65%': {transform: 'translate(1.2%, -0.3%) rotate(0.3deg)'},
216
+ '70%': {transform: 'translate(0.7%, 0.6%) rotate(0.7deg)'},
217
+ '75%': {transform: 'translate(-0.4%, -0.2%) rotate(-0.2deg)'},
218
+ '80%': {transform: 'translate(1%, 0%) rotate(-1deg)'},
219
+ '85%': {transform: 'translate(-0.6%, 0%) rotate(0.7deg)'},
220
+ '90%': {transform: 'translate(0%, 0.4%) rotate(0.2deg)'},
221
+ '95%': {transform: 'translate(1%, 0.2%) rotate(0.5deg)'},
222
+ '100%': {transform: 'translate(-0.5%, -0.6%) rotate(0deg)'},
223
+ };
224
+ additionnalAnimation = '1s ease-in-out infinite reverse';
225
+ additionnalAnimationName = keyframes;
226
+ } else if (additionalAnimation === 'zoom') {
227
+ const keyframes = {
228
+ '0%': {transform: 'scale(1)'},
229
+ '90%': {transform: 'scale(1.2)'},
230
+ '100%': {transform: 'scale(1)'},
231
+ };
232
+ transition = '0.1 ease-out';
233
+ additionnalAnimation = '0.6s ease-in-out infinite';
234
+ additionnalAnimationName = keyframes;
235
+ } else if (additionalAnimation === 'shift') {
236
+ const keyframes = {
237
+ '0%': {transform: 'translateX(0%)'},
238
+ '25%': {transform: 'translateX(-5%)'},
239
+ '50%': {transform: 'translateX(0%)'},
240
+ '75%': {transform: 'translateX(5%)'},
241
+ '100%': {transform: 'translateX(0%)'},
242
+ };
243
+ transition = '0.1 ease-out';
244
+ additionnalAnimation = '0.4s ease-in-out infinite';
245
+ additionnalAnimationName = keyframes;
246
+ } else if (additionalAnimation === 'dancing') {
247
+ const keyframes = {
248
+ '0%': {transform: 'rotate(4deg) translate(0%, 0%)'},
249
+ '10%': {transform: 'rotate(-4deg) translate(2%, -1%)'},
250
+ '20%': {transform: 'rotate(4deg) translate(-1%, 2%)'},
251
+ '30%': {transform: 'rotate(-4deg) translate(0%, -2%)'},
252
+ '40%': {transform: 'rotate(4deg) translate(2%, 0%)'},
253
+ '50%': {transform: 'rotate(-4deg) translate(-1%, 1%)'},
254
+ '60%': {transform: 'rotate(4deg) translate(1%, -2%)'},
255
+ '70%': {transform: 'rotate(-4deg) translate(-2%, 1%)'},
256
+ '80%': {transform: 'rotate(4deg) translate(2%, -1%)'},
257
+ '90%': {transform: 'rotate(-4deg) translate(-1%, 2%)'},
258
+ '100%': {transform: 'rotate(4deg) translate(0%, 0%)'},
259
+ };
260
+ transition = '0.3 ease-out';
261
+ additionnalAnimation = '1.2s ease-in-out infinite reverse';
262
+ additionnalAnimationName = keyframes;
263
+ }
264
+
265
+ const additional = {
266
+ 'zIndex': 1,
267
+ 'position': 'absolute',
268
+ 'left': '0px',
269
+ 'right': '0px',
270
+ 'bottom': px(s * -0.45),
271
+ 'height': px(s * 0.4),
272
+ 'borderRadius': kind === 'toy' ? rr2 : rr1,
273
+ 'boxShadow': shadow ? `0px ${rs1} ${rs2} ${rs3} rgba(0,0,0,${rs4})` : null,
274
+ 'background': background,
275
+ 'display': 'flex',
276
+ 'flexDirection': 'row',
277
+ 'justifyContent': 'center',
278
+ 'alignSelf': 'center',
279
+ 'cursor': disabled ? null : 'pointer',
280
+ 'transition': transition,
281
+ ':hover': {
282
+ animation: additionnalAnimation,
283
+ animationName: additionnalAnimationName,
284
+ },
285
+ };
286
+
287
+ /******************************************************************************/
288
+
289
+ return {
290
+ rocket,
291
+ box,
292
+ icon,
293
+ iconSvg,
294
+ iconShadow: iconShadowStyle,
295
+ glyph,
296
+ title,
297
+ subtitle,
298
+ gauge,
299
+ ratio,
300
+ crossed: crossedStyle,
301
+ gear,
302
+ additional,
303
+ };
304
+ }
305
+
306
+ /******************************************************************************/