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,128 +1,128 @@
1
- import * as TicketHelpers from './ticket-helpers.js';
2
- import svg from '../helpers/svg-helpers';
3
- import {Unit} from 'goblin-theme';
4
- const n = Unit.toValue;
5
-
6
- // Draw _n_n_n_n_n_n_n_n_n_n_n_n_n_
7
- function horizontalDash(path, r, len, dx) {
8
- const step = parseInt(dx / len);
9
- const over = (dx - len * step) / 2;
10
- svg.lr(path, over + r, 0);
11
- let i = 0;
12
- for (i = 0; i < step - 1; i++) {
13
- svg.lr(path, len - r - r, 0);
14
- svg.ar(path, r, r + r, 0, 0);
15
- }
16
- svg.lr(path, len - r + over, 0);
17
- }
18
-
19
- /******************************************************************************/
20
-
21
- function getOutlinePath(theme, shape, width, height) {
22
- const r = n(theme.shapes.ticketCornerRadius);
23
- const s = n(theme.shapes.ticketLineRadius);
24
- const w = n(width);
25
- const h = n(height);
26
-
27
- const hasTopSerration = TicketHelpers.hasTopSerration(shape);
28
- const hasBottomSerration = TicketHelpers.hasBottomSerration(shape);
29
-
30
- const path = svg.createPath();
31
- if (!hasTopSerration && hasBottomSerration) {
32
- // Serration only on bottom.
33
- svg.ma(path, 0, 0);
34
- svg.lr(path, w, 0);
35
- svg.lr(path, 0, h - r);
36
- svg.ar(path, r, -r, r, 0); // bottom-right corner
37
- horizontalDash(path, -s, -s * 3.5, -(w - r - r));
38
- svg.ar(path, r, -r, -r, 0); // bottom-left corner
39
- svg.close(path);
40
- } else if (hasTopSerration && !hasBottomSerration) {
41
- // Serration only on top.
42
- svg.ma(path, 0, r);
43
- svg.ar(path, r, r, -r, 0); // top-left corner
44
- horizontalDash(path, s, s * 3.5, w - r - r);
45
- svg.ar(path, r, r, r, 0); // top-right corner
46
- svg.lr(path, 0, h - r);
47
- svg.lr(path, -w, 0);
48
- svg.close(path);
49
- } else if (!hasTopSerration && !hasBottomSerration) {
50
- // No Serration.
51
- svg.ma(path, 0, 0);
52
- svg.lr(path, w, 0);
53
- svg.lr(path, 0, h);
54
- svg.lr(path, -w, 0);
55
- svg.close(path);
56
- } else {
57
- // Serration on top and bottom.
58
- svg.ma(path, 0, r);
59
- svg.ar(path, r, r, -r, 0); // top-left corner
60
- horizontalDash(path, s, s * 3.5, w - r - r);
61
- svg.ar(path, r, r, r, 0); // top-right corner
62
- svg.lr(path, 0, h - r - r);
63
- svg.ar(path, r, -r, r, 0); // bottom-right corner
64
- horizontalDash(path, -s, -s * 3.5, -(w - r - r));
65
- svg.ar(path, r, -r, -r, 0); // bottom-left corner
66
- svg.close(path);
67
- }
68
- return svg.getPath(path);
69
- }
70
-
71
- /******************************************************************************/
72
-
73
- function getCornerPath(width, height, position, size) {
74
- const w = n(width);
75
- const h = n(height);
76
- const s = n(size);
77
-
78
- const path = svg.createPath();
79
-
80
- if (position === 'topRight') {
81
- if (!width) {
82
- console.log(
83
- "Ticket: It's impossible to draw the corner 'topRight' without 'width'"
84
- );
85
- } else {
86
- svg.ma(path, w, 0);
87
- svg.lr(path, -s, 0);
88
- svg.lr(path, s, s);
89
- svg.close(path);
90
- }
91
- } else if (position === 'topLeft') {
92
- svg.ma(path, 0, 0);
93
- svg.lr(path, 0, s);
94
- svg.lr(path, s, -s);
95
- svg.close(path);
96
- } else if (position === 'bottomRight') {
97
- if (!width || !height) {
98
- console.log(
99
- "Ticket: It's impossible to draw the corner 'bottomRight' without 'width' and 'height'"
100
- );
101
- } else {
102
- svg.ma(path, w, h);
103
- svg.lr(path, 0, -s);
104
- svg.lr(path, -s, s);
105
- svg.close(path);
106
- }
107
- } else if (position === 'bottomLeft') {
108
- if (!height) {
109
- console.log(
110
- "Ticket: It's impossible to draw the corner 'bottomLeft' without 'height'"
111
- );
112
- } else {
113
- svg.ma(path, 0, h);
114
- svg.lr(path, s, 0);
115
- svg.lr(path, -s, -s);
116
- svg.close(path);
117
- }
118
- }
119
-
120
- return svg.getPath(path);
121
- }
122
-
123
- /******************************************************************************/
124
-
125
- export default {
126
- getOutlinePath,
127
- getCornerPath,
128
- };
1
+ import * as TicketHelpers from './ticket-helpers.js';
2
+ import svg from '../helpers/svg-helpers';
3
+ import {Unit} from 'goblin-theme';
4
+ const n = Unit.toValue;
5
+
6
+ // Draw _n_n_n_n_n_n_n_n_n_n_n_n_n_
7
+ function horizontalDash(path, r, len, dx) {
8
+ const step = parseInt(dx / len);
9
+ const over = (dx - len * step) / 2;
10
+ svg.lr(path, over + r, 0);
11
+ let i = 0;
12
+ for (i = 0; i < step - 1; i++) {
13
+ svg.lr(path, len - r - r, 0);
14
+ svg.ar(path, r, r + r, 0, 0);
15
+ }
16
+ svg.lr(path, len - r + over, 0);
17
+ }
18
+
19
+ /******************************************************************************/
20
+
21
+ function getOutlinePath(theme, shape, width, height) {
22
+ const r = n(theme.shapes.ticketCornerRadius);
23
+ const s = n(theme.shapes.ticketLineRadius);
24
+ const w = n(width);
25
+ const h = n(height);
26
+
27
+ const hasTopSerration = TicketHelpers.hasTopSerration(shape);
28
+ const hasBottomSerration = TicketHelpers.hasBottomSerration(shape);
29
+
30
+ const path = svg.createPath();
31
+ if (!hasTopSerration && hasBottomSerration) {
32
+ // Serration only on bottom.
33
+ svg.ma(path, 0, 0);
34
+ svg.lr(path, w, 0);
35
+ svg.lr(path, 0, h - r);
36
+ svg.ar(path, r, -r, r, 0); // bottom-right corner
37
+ horizontalDash(path, -s, -s * 3.5, -(w - r - r));
38
+ svg.ar(path, r, -r, -r, 0); // bottom-left corner
39
+ svg.close(path);
40
+ } else if (hasTopSerration && !hasBottomSerration) {
41
+ // Serration only on top.
42
+ svg.ma(path, 0, r);
43
+ svg.ar(path, r, r, -r, 0); // top-left corner
44
+ horizontalDash(path, s, s * 3.5, w - r - r);
45
+ svg.ar(path, r, r, r, 0); // top-right corner
46
+ svg.lr(path, 0, h - r);
47
+ svg.lr(path, -w, 0);
48
+ svg.close(path);
49
+ } else if (!hasTopSerration && !hasBottomSerration) {
50
+ // No Serration.
51
+ svg.ma(path, 0, 0);
52
+ svg.lr(path, w, 0);
53
+ svg.lr(path, 0, h);
54
+ svg.lr(path, -w, 0);
55
+ svg.close(path);
56
+ } else {
57
+ // Serration on top and bottom.
58
+ svg.ma(path, 0, r);
59
+ svg.ar(path, r, r, -r, 0); // top-left corner
60
+ horizontalDash(path, s, s * 3.5, w - r - r);
61
+ svg.ar(path, r, r, r, 0); // top-right corner
62
+ svg.lr(path, 0, h - r - r);
63
+ svg.ar(path, r, -r, r, 0); // bottom-right corner
64
+ horizontalDash(path, -s, -s * 3.5, -(w - r - r));
65
+ svg.ar(path, r, -r, -r, 0); // bottom-left corner
66
+ svg.close(path);
67
+ }
68
+ return svg.getPath(path);
69
+ }
70
+
71
+ /******************************************************************************/
72
+
73
+ function getCornerPath(width, height, position, size) {
74
+ const w = n(width);
75
+ const h = n(height);
76
+ const s = n(size);
77
+
78
+ const path = svg.createPath();
79
+
80
+ if (position === 'topRight') {
81
+ if (!width) {
82
+ console.log(
83
+ "Ticket: It's impossible to draw the corner 'topRight' without 'width'"
84
+ );
85
+ } else {
86
+ svg.ma(path, w, 0);
87
+ svg.lr(path, -s, 0);
88
+ svg.lr(path, s, s);
89
+ svg.close(path);
90
+ }
91
+ } else if (position === 'topLeft') {
92
+ svg.ma(path, 0, 0);
93
+ svg.lr(path, 0, s);
94
+ svg.lr(path, s, -s);
95
+ svg.close(path);
96
+ } else if (position === 'bottomRight') {
97
+ if (!width || !height) {
98
+ console.log(
99
+ "Ticket: It's impossible to draw the corner 'bottomRight' without 'width' and 'height'"
100
+ );
101
+ } else {
102
+ svg.ma(path, w, h);
103
+ svg.lr(path, 0, -s);
104
+ svg.lr(path, -s, s);
105
+ svg.close(path);
106
+ }
107
+ } else if (position === 'bottomLeft') {
108
+ if (!height) {
109
+ console.log(
110
+ "Ticket: It's impossible to draw the corner 'bottomLeft' without 'height'"
111
+ );
112
+ } else {
113
+ svg.ma(path, 0, h);
114
+ svg.lr(path, s, 0);
115
+ svg.lr(path, -s, -s);
116
+ svg.close(path);
117
+ }
118
+ }
119
+
120
+ return svg.getPath(path);
121
+ }
122
+
123
+ /******************************************************************************/
124
+
125
+ export default {
126
+ getOutlinePath,
127
+ getCornerPath,
128
+ };
@@ -1,181 +1,181 @@
1
- import {types} from 'goblin-gadgets/types/types.js';
2
-
3
- /******************************************************************************/
4
-
5
- export default [
6
- // Main.
7
- {
8
- name: 'identicalCount',
9
- group: 'main',
10
- type: types.number,
11
- },
12
- {
13
- name: 'tooltip',
14
- group: 'main',
15
- type: types.string,
16
- },
17
- {
18
- name: 'children',
19
- group: 'main',
20
- type: types.component,
21
- },
22
- {
23
- name: 'flash',
24
- group: 'main',
25
- type: types.bool,
26
- },
27
- {
28
- name: 'show',
29
- group: 'main',
30
- type: types.bool,
31
- },
32
- {
33
- name: 'visibility',
34
- group: 'main',
35
- type: types.bool,
36
- },
37
- {
38
- name: 'opacity',
39
- group: 'main',
40
- type: types.number,
41
- min: 0,
42
- max: 1,
43
- },
44
- {
45
- name: 'cursor',
46
- group: 'main',
47
- type: types.cursor,
48
- },
49
- {
50
- name: 'hideContent',
51
- group: 'main',
52
- type: types.bool,
53
- },
54
-
55
- // Aspect.
56
- {
57
- name: 'color',
58
- group: 'aspect',
59
- type: types.color,
60
- },
61
- {
62
- name: 'kind',
63
- group: 'aspect',
64
- type: types.enum([
65
- '',
66
- 'ticket',
67
- 'rect',
68
- 'cover',
69
- 'thin',
70
- 'event',
71
- 'subpane',
72
- ]),
73
- },
74
- {
75
- name: 'subkind',
76
- group: 'aspect',
77
- type: types.enum(['', 'dragged']),
78
- },
79
- {
80
- name: 'shadow',
81
- group: 'aspect',
82
- type: types.bool,
83
- },
84
- {
85
- name: 'hatch',
86
- group: 'aspect',
87
- type: types.bool,
88
- },
89
- {
90
- name: 'backgroundText',
91
- group: 'aspect',
92
- type: types.oneOfType([types.number, types.string]),
93
- },
94
- {
95
- name: 'hudGlyph',
96
- group: 'aspect',
97
- type: types.glyph,
98
- },
99
- {
100
- name: 'shape',
101
- group: 'aspect',
102
- type: types.enum(['', 'middle', 'first', 'continued', 'last']),
103
- },
104
- {
105
- name: 'hoverShape',
106
- group: 'aspect',
107
- type: types.enum(['', 'middle', 'first', 'continued', 'last']),
108
- },
109
-
110
- // Corner.
111
- {
112
- name: 'cornerPosition',
113
- group: 'corner',
114
- type: types.enum(['', 'topRight', 'topLeft', 'bottomRight', 'bottomLeft']),
115
- },
116
- {
117
- name: 'cornerColor',
118
- group: 'corner',
119
- type: types.color,
120
- },
121
- {
122
- name: 'cornerSize',
123
- group: 'corner',
124
- type: types.pixel,
125
- min: 0,
126
- max: 100,
127
- },
128
-
129
- // Layout.
130
- {
131
- name: 'width',
132
- group: 'layout',
133
- type: types.pixel,
134
- min: 0,
135
- max: 1000,
136
- },
137
- {
138
- name: 'height',
139
- group: 'layout',
140
- type: types.pixel,
141
- min: 0,
142
- max: 1000,
143
- },
144
- {
145
- name: 'grow',
146
- group: 'layout',
147
- type: types.grow,
148
- },
149
- {
150
- name: 'verticalSpacing',
151
- group: 'layout',
152
- type: types.verticalSpacing,
153
- },
154
- {
155
- name: 'horizontalSpacing',
156
- group: 'layout',
157
- type: types.horizontalSpacing,
158
- },
159
-
160
- // Function.
161
- {
162
- name: 'onMouseOver',
163
- group: 'function',
164
- type: types.function,
165
- },
166
- {
167
- name: 'onMouseOut',
168
- group: 'function',
169
- type: types.function,
170
- },
171
- {
172
- name: 'mouseDown',
173
- group: 'function',
174
- type: types.function,
175
- },
176
- {
177
- name: 'mouseUp',
178
- group: 'function',
179
- type: types.function,
180
- },
181
- ];
1
+ import {types} from 'goblin-gadgets/types/types.js';
2
+
3
+ /******************************************************************************/
4
+
5
+ export default [
6
+ // Main.
7
+ {
8
+ name: 'identicalCount',
9
+ group: 'main',
10
+ type: types.number,
11
+ },
12
+ {
13
+ name: 'tooltip',
14
+ group: 'main',
15
+ type: types.string,
16
+ },
17
+ {
18
+ name: 'children',
19
+ group: 'main',
20
+ type: types.component,
21
+ },
22
+ {
23
+ name: 'flash',
24
+ group: 'main',
25
+ type: types.bool,
26
+ },
27
+ {
28
+ name: 'show',
29
+ group: 'main',
30
+ type: types.bool,
31
+ },
32
+ {
33
+ name: 'visibility',
34
+ group: 'main',
35
+ type: types.bool,
36
+ },
37
+ {
38
+ name: 'opacity',
39
+ group: 'main',
40
+ type: types.number,
41
+ min: 0,
42
+ max: 1,
43
+ },
44
+ {
45
+ name: 'cursor',
46
+ group: 'main',
47
+ type: types.cursor,
48
+ },
49
+ {
50
+ name: 'hideContent',
51
+ group: 'main',
52
+ type: types.bool,
53
+ },
54
+
55
+ // Aspect.
56
+ {
57
+ name: 'color',
58
+ group: 'aspect',
59
+ type: types.color,
60
+ },
61
+ {
62
+ name: 'kind',
63
+ group: 'aspect',
64
+ type: types.enum([
65
+ '',
66
+ 'ticket',
67
+ 'rect',
68
+ 'cover',
69
+ 'thin',
70
+ 'event',
71
+ 'subpane',
72
+ ]),
73
+ },
74
+ {
75
+ name: 'subkind',
76
+ group: 'aspect',
77
+ type: types.enum(['', 'dragged']),
78
+ },
79
+ {
80
+ name: 'shadow',
81
+ group: 'aspect',
82
+ type: types.bool,
83
+ },
84
+ {
85
+ name: 'hatch',
86
+ group: 'aspect',
87
+ type: types.bool,
88
+ },
89
+ {
90
+ name: 'backgroundText',
91
+ group: 'aspect',
92
+ type: types.oneOfType([types.number, types.string]),
93
+ },
94
+ {
95
+ name: 'hudGlyph',
96
+ group: 'aspect',
97
+ type: types.glyph,
98
+ },
99
+ {
100
+ name: 'shape',
101
+ group: 'aspect',
102
+ type: types.enum(['', 'middle', 'first', 'continued', 'last']),
103
+ },
104
+ {
105
+ name: 'hoverShape',
106
+ group: 'aspect',
107
+ type: types.enum(['', 'middle', 'first', 'continued', 'last']),
108
+ },
109
+
110
+ // Corner.
111
+ {
112
+ name: 'cornerPosition',
113
+ group: 'corner',
114
+ type: types.enum(['', 'topRight', 'topLeft', 'bottomRight', 'bottomLeft']),
115
+ },
116
+ {
117
+ name: 'cornerColor',
118
+ group: 'corner',
119
+ type: types.color,
120
+ },
121
+ {
122
+ name: 'cornerSize',
123
+ group: 'corner',
124
+ type: types.pixel,
125
+ min: 0,
126
+ max: 100,
127
+ },
128
+
129
+ // Layout.
130
+ {
131
+ name: 'width',
132
+ group: 'layout',
133
+ type: types.pixel,
134
+ min: 0,
135
+ max: 1000,
136
+ },
137
+ {
138
+ name: 'height',
139
+ group: 'layout',
140
+ type: types.pixel,
141
+ min: 0,
142
+ max: 1000,
143
+ },
144
+ {
145
+ name: 'grow',
146
+ group: 'layout',
147
+ type: types.grow,
148
+ },
149
+ {
150
+ name: 'verticalSpacing',
151
+ group: 'layout',
152
+ type: types.verticalSpacing,
153
+ },
154
+ {
155
+ name: 'horizontalSpacing',
156
+ group: 'layout',
157
+ type: types.horizontalSpacing,
158
+ },
159
+
160
+ // Function.
161
+ {
162
+ name: 'onMouseOver',
163
+ group: 'function',
164
+ type: types.function,
165
+ },
166
+ {
167
+ name: 'onMouseOut',
168
+ group: 'function',
169
+ type: types.function,
170
+ },
171
+ {
172
+ name: 'mouseDown',
173
+ group: 'function',
174
+ type: types.function,
175
+ },
176
+ {
177
+ name: 'mouseUp',
178
+ group: 'function',
179
+ type: types.function,
180
+ },
181
+ ];