pxt-core 7.4.14 → 7.4.15

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 (47) hide show
  1. package/built/cli.js +8 -0
  2. package/built/nodeutil.d.ts +1 -1
  3. package/built/nodeutil.js +2 -2
  4. package/built/pxt.js +9 -0
  5. package/built/pxtblockly.js +5 -2
  6. package/built/pxtblocks.d.ts +1 -0
  7. package/built/pxtblocks.js +5 -2
  8. package/built/pxtlib.js +1 -0
  9. package/built/target.js +1 -1
  10. package/built/web/main.js +1 -1
  11. package/built/web/pxtapp.js +1 -1
  12. package/built/web/pxtasseteditor.js +1 -1
  13. package/built/web/pxtblockly.js +1 -1
  14. package/built/web/pxtblocks.js +1 -1
  15. package/built/web/pxtembed.js +2 -2
  16. package/built/web/pxtlib.js +1 -1
  17. package/built/web/pxtworker.js +1 -1
  18. package/built/web/react-common-skillmap.css +1 -1
  19. package/built/web/rtlreact-common-skillmap.css +1 -1
  20. package/built/web/rtlsemantic.css +1 -1
  21. package/built/web/semantic.css +1 -1
  22. package/built/web/skillmap/css/main.b2b69d60.chunk.css +1 -0
  23. package/built/web/skillmap/js/2.fce3190c.chunk.js +2 -0
  24. package/built/web/skillmap/js/main.9d64b2d7.chunk.js +1 -0
  25. package/package.json +3 -3
  26. package/react-common/components/controls/Button.tsx +4 -3
  27. package/react-common/components/controls/Checkbox.tsx +47 -0
  28. package/react-common/components/controls/Input.tsx +117 -0
  29. package/react-common/components/controls/List.tsx +2 -3
  30. package/react-common/components/controls/Modal.tsx +143 -0
  31. package/react-common/components/profile/Profile.tsx +1 -1
  32. package/react-common/components/profile/UserPane.tsx +12 -8
  33. package/react-common/components/util.tsx +9 -0
  34. package/react-common/styles/controls/Button.less +17 -0
  35. package/react-common/styles/controls/Checkbox.less +13 -0
  36. package/react-common/styles/controls/Input.less +95 -0
  37. package/react-common/styles/controls/Modal.less +105 -0
  38. package/react-common/styles/controls/Spinner.less +24 -0
  39. package/react-common/styles/profile/profile.less +12 -0
  40. package/react-common/styles/react-common-variables.less +38 -3
  41. package/react-common/styles/react-common.less +4 -0
  42. package/theme/asset-editor.less +13 -29
  43. package/webapp/public/skillmap.html +2 -2
  44. package/built/web/skillmap/css/main.369ecead.chunk.css +0 -1
  45. package/built/web/skillmap/js/2.dc66e964.chunk.js +0 -2
  46. package/built/web/skillmap/js/main.e89a1af7.chunk.js +0 -1
  47. package/react-common/components/Checkbox.tsx +0 -25
@@ -0,0 +1,143 @@
1
+ import React = require("react");
2
+ import { classList, ContainerProps } from "../util";
3
+ import { Button } from "./Button";
4
+
5
+ export interface ModalAction {
6
+ label: string;
7
+ className?: string;
8
+ disabled?: boolean;
9
+ icon?: string;
10
+ xicon?: boolean;
11
+ onClick: () => void;
12
+ url?: string;
13
+
14
+ // TODO: It would be nice to make fullscreen modals their own thing and deprecate this prop. right
15
+ // now it's required to render the back arrow
16
+ fullscreen?: boolean;
17
+ }
18
+
19
+ export interface ModalProps extends ContainerProps {
20
+ title: string;
21
+ ariaDescribedBy?: string;
22
+ actions?: ModalAction[];
23
+ onClose?: () => void;
24
+ fullscreen?: boolean;
25
+ }
26
+
27
+ export const Modal = (props: ModalProps) => {
28
+ const {
29
+ children,
30
+ id,
31
+ className,
32
+ ariaLabel,
33
+ ariaHidden,
34
+ ariaDescribedBy,
35
+ role,
36
+ title,
37
+ actions,
38
+ onClose,
39
+ fullscreen
40
+ } = props;
41
+
42
+ const closeClickHandler = (e?: React.MouseEvent<HTMLButtonElement>) => {
43
+ if (onClose) onClose();
44
+ }
45
+
46
+ let firstFocusableElement: HTMLElement;
47
+ let lastFocusableElement: HTMLElement;
48
+
49
+ const handleRef = (ref: HTMLDivElement) => {
50
+ if (!ref) return;
51
+
52
+ const focusable = ref.querySelectorAll(`[tabindex]:not([tabindex="-1"])`);
53
+
54
+ firstFocusableElement = focusable.item(0) as HTMLElement;
55
+ lastFocusableElement = focusable.item(focusable.length - 1) as HTMLElement;
56
+
57
+ // TODO: Add an error here? this should never happen
58
+ if (!firstFocusableElement) return;
59
+
60
+ if (!ref.contains(document.activeElement)) firstFocusableElement.focus();
61
+ }
62
+
63
+ const onKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {
64
+ if (e.key !== "Tab") return;
65
+
66
+ const target = e.target;
67
+
68
+ if (e.shiftKey) {
69
+ if (target === firstFocusableElement) {
70
+ lastFocusableElement.focus();
71
+ e.preventDefault();
72
+ e.stopPropagation();
73
+ }
74
+ }
75
+ else if (target === lastFocusableElement) {
76
+ firstFocusableElement.focus();
77
+ e.preventDefault();
78
+ e.stopPropagation();
79
+ }
80
+ }
81
+
82
+ const classes = classList(
83
+ "common-modal-container",
84
+ fullscreen && "fullscreen",
85
+ className
86
+ );
87
+
88
+ return <div className={classes} ref={handleRef} onKeyDown={onKeyDown}>
89
+ <div id={id}
90
+ className="common-modal"
91
+ role={role || "dialog"}
92
+ aria-hidden={ariaHidden}
93
+ aria-label={ariaLabel}
94
+ aria-describedby={ariaDescribedBy}
95
+ aria-labelledby="modal-title">
96
+ <div className="common-modal-header">
97
+ {fullscreen &&
98
+ <div className="common-modal-back">
99
+ <Button
100
+ className="menu-button"
101
+ onClick={closeClickHandler}
102
+ title={lf("Go Back")}
103
+ label={lf("Go Back")}
104
+ leftIcon="fas fa-arrow-left"
105
+ />
106
+ </div>
107
+ }
108
+ <div id="modal-title" className="common-modal-title">
109
+ {title}
110
+ </div>
111
+ {!fullscreen &&
112
+ <div className="common-modal-close">
113
+ <Button
114
+ className="menu-button"
115
+ onClick={closeClickHandler}
116
+ title={lf("Close")}
117
+ rightIcon="fas fa-times-circle"
118
+ />
119
+ </div>
120
+ }
121
+ </div>
122
+ <div className="common-modal-body">
123
+ {children}
124
+ </div>
125
+ {actions?.length &&
126
+ <div className="common-modal-footer">
127
+ { actions.map((action, index) =>
128
+ <Button
129
+ key={index}
130
+ className="primary inverted"
131
+ disabled={action.disabled}
132
+ onClick={action.onClick}
133
+ href={action.url}
134
+ label={action.label}
135
+ title={action.label}
136
+ rightIcon={(action.xicon ? "xicon " : "") + action.icon}
137
+ />
138
+ )}
139
+ </div>
140
+ }
141
+ </div>
142
+ </div>
143
+ }
@@ -4,7 +4,7 @@ import * as React from "react";
4
4
  import { BadgeList } from "./BadgeList";
5
5
  import { UserPane } from "./UserPane";
6
6
  import { BadgeInfo } from "./BadgeInfo";
7
- import { CheckboxStatus } from "../Checkbox";
7
+ import { CheckboxStatus } from "../util";
8
8
 
9
9
  export interface ProfileProps {
10
10
  user: pxt.auth.State;
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
- import { fireClickOnEnter } from "../util";
2
+ import { fireClickOnEnter, CheckboxStatus } from "../util";
3
3
  import { UserNotification } from "./UserNotification";
4
- import { Checkbox, CheckboxStatus } from "../Checkbox";
4
+ import { Checkbox } from "../controls/Checkbox";
5
5
 
6
6
  export interface UserPaneProps {
7
7
  profile: pxt.auth.UserProfile;
@@ -18,7 +18,11 @@ export const UserPane = (props: UserPaneProps) => {
18
18
 
19
19
  const { username, displayName, picture } = profile.idp;
20
20
 
21
- const checkboxLabel = "email-optin-label"
21
+ const emailLabel = <>
22
+ {emailChecked === CheckboxStatus.Waiting ? <div className="common-spinner" /> : undefined}
23
+ {lf("I would like to receive the MakeCode newsletter. ")}
24
+ <a href="https://makecode.com/privacy" target="_blank" rel="noopener noreferrer">{lf("View Privacy Statement")}</a>
25
+ </>
22
26
 
23
27
  return <div className="profile-user-pane">
24
28
  <div className="profile-portrait">
@@ -42,11 +46,11 @@ export const UserPane = (props: UserPaneProps) => {
42
46
  { notification && <UserNotification notification={notification}/> }
43
47
  <div className="profile-spacer"></div>
44
48
  <div className="profile-email">
45
- <Checkbox isChecked={emailChecked} onClick={onEmailCheckClick} label={checkboxLabel}/>
46
- <div id={checkboxLabel}>
47
- {lf("I would like to receive the MakeCode newsletter. ")}
48
- <a href="https://makecode.com/privacy" target="_blank" rel="noopener noreferrer">{lf("View Privacy Statement")}</a>
49
- </div>
49
+ <Checkbox id="profile-email-checkbox"
50
+ className={emailChecked === CheckboxStatus.Waiting ? "loading" : ""}
51
+ isChecked={emailChecked === CheckboxStatus.Selected}
52
+ onChange={onEmailCheckClick}
53
+ label={emailLabel}/>
50
54
  </div>
51
55
  <div className="profile-actions">
52
56
  <a role="button"
@@ -8,6 +8,9 @@ export interface ControlProps {
8
8
  role?: string;
9
9
  }
10
10
 
11
+ export interface ContainerProps extends React.PropsWithChildren<ControlProps> {
12
+ }
13
+
11
14
  export function jsxLF(loc: string, ...rest: JSX.Element[]) {
12
15
  const indices: number[] = [];
13
16
 
@@ -49,4 +52,10 @@ export function classList(...classes: string[]) {
49
52
  .map(c => c.trim())
50
53
  .filter(c => !!c)
51
54
  .join(" ");
55
+ }
56
+
57
+ export enum CheckboxStatus {
58
+ Selected,
59
+ Unselected,
60
+ Waiting
52
61
  }
@@ -1,5 +1,6 @@
1
1
  .common-button {
2
2
  cursor: pointer;
3
+ position: relative;
3
4
  display: inline-block;
4
5
  min-height: 1rem;
5
6
  outline: none;
@@ -31,6 +32,22 @@
31
32
  margin-left: 0.5rem;
32
33
  }
33
34
 
35
+ .common-button:focus::after {
36
+ content: "";
37
+ position: absolute;
38
+ inset: 4px;
39
+ border: 1px solid transparent;
40
+ outline: @buttonFocusOutline;
41
+ z-index: 1;
42
+ border-radius: 0.2em;
43
+ }
44
+
45
+ .common-button.inverted:focus::after,
46
+ .common-button.menu-button:focus::after {
47
+ outline: @buttonFocusOutlineInverted;
48
+ }
49
+
50
+
34
51
  /****************************************************
35
52
  * Color Variants *
36
53
  ****************************************************/
@@ -0,0 +1,13 @@
1
+ .common-checkbox {
2
+ position: relative;
3
+ padding: 0.25rem;
4
+
5
+ input {
6
+ margin-right: 0.5rem;
7
+ }
8
+ }
9
+
10
+ .common-checkbox:focus-within {
11
+ outline: @checkboxFocusOutline;
12
+ border-radius: 0.2em;
13
+ }
@@ -0,0 +1,95 @@
1
+ /****************************************************
2
+ * Input *
3
+ ****************************************************/
4
+
5
+ .common-input-group {
6
+ position: relative;
7
+ display: flex;
8
+ height: 2rem;
9
+ align-items: stretch;
10
+ border-radius: 2px;
11
+ border: 1px solid @inputBorderColor;
12
+ background: @inputBackgroundColor;
13
+ }
14
+
15
+ .common-input-group:focus::after,
16
+ .common-input-group:focus-within::after {
17
+ content: "";
18
+ position: absolute;
19
+ inset: -1px;
20
+ border: 2px solid @inputBorderColorFocus;
21
+ border-radius: 2px;
22
+ pointer-events: none;
23
+ }
24
+
25
+ .common-input {
26
+ width: 100%;
27
+ min-width: 0;
28
+ padding: 0 0.5rem;
29
+ color: @inputTextColor;
30
+ border: none;
31
+ outline: 0;
32
+ background: none transparent;
33
+ text-overflow: ellipsis;
34
+ }
35
+
36
+ /****************************************************
37
+ * Input Label *
38
+ ****************************************************/
39
+
40
+ .common-input-label {
41
+ display: block;
42
+ font-size: 14px;
43
+ font-weight: 600;
44
+ padding: 0.3rem 0;
45
+ overflow-wrap: break-word;
46
+ }
47
+
48
+ /****************************************************
49
+ * Input Icon *
50
+ ****************************************************/
51
+
52
+ .common-input-group {
53
+ & > i.fas, i.far, .icon, .xicon {
54
+ position: absolute;
55
+ bottom: 0.3rem;
56
+ right: 0.5rem;
57
+ width: 1.25rem;
58
+ margin-right: 0;
59
+ line-height: 1.25rem;
60
+ pointer-events: none;
61
+ }
62
+
63
+ & > .common-button {
64
+ color: @inputButtonColor;
65
+ padding: 0;
66
+ margin: 0;
67
+ border-radius: 0;
68
+
69
+ &:hover {
70
+ color: @inputButtonColorHover;
71
+ }
72
+ }
73
+ }
74
+
75
+ .common-input.has-icon {
76
+ padding: 0 1.75rem 0 0.5rem;
77
+ }
78
+
79
+ /****************************************************
80
+ * Disabled Input *
81
+ ****************************************************/
82
+
83
+ .common-input-wrapper.disabled {
84
+ .common-input-group {
85
+ cursor: default;
86
+ border: 1px solid @inputBackgroundColorDisabled;
87
+ background: @inputBackgroundColorDisabled;
88
+ }
89
+
90
+ .common-input,
91
+ .common-input-label,
92
+ i {
93
+ color: @inputTextColorDisabled;
94
+ }
95
+ }
@@ -0,0 +1,105 @@
1
+ .common-modal-container {
2
+ position: fixed;
3
+ display: flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ top: 0;
7
+ left: 0;
8
+ right: 0;
9
+ bottom: 0;
10
+ background-color: var(--modal-overlay-color);
11
+ z-index: var(--modal-dimmer-zindex);
12
+ }
13
+
14
+ .common-modal-container.fullscreen {
15
+ z-index: var(--fullscreen-modal-zindex)
16
+ }
17
+
18
+ .common-modal {
19
+ width: 50%;
20
+ max-width: 40rem;
21
+ border-radius: .285rem;
22
+ overflow: hidden;
23
+ }
24
+
25
+ .common-modal-header {
26
+ background-color: @modalHeaderBackgroundColor;
27
+
28
+ display: flex;
29
+ font-size: 1.2rem;
30
+ font-weight: 600;
31
+ padding-left: 1.5rem;
32
+ border-bottom: @modalSeparatorBorder;
33
+ flex-shrink: 0;
34
+
35
+ .common-modal-title {
36
+ flex-grow: 1;
37
+ padding-top: 1.25rem;
38
+ padding-bottom: 1.25rem;
39
+ }
40
+
41
+ .common-modal-close .common-button .fas {
42
+ color: @modalCloseColor;
43
+ }
44
+ }
45
+
46
+ .common-modal-body {
47
+ background-color: @modalBodyBackgroundColor;
48
+ min-height: 4rem;
49
+ padding: 1.25rem 1.5rem;
50
+ }
51
+
52
+ .common-modal-footer {
53
+ background-color: @modalFooterBackgroundColor;
54
+ display: grid;
55
+ grid-template-columns: 1fr 1fr;
56
+ gap: 1rem;
57
+ padding: 1rem;
58
+ border-top: @modalSeparatorBorder;
59
+
60
+ button:only-child {
61
+ grid-column: 2 / -1;
62
+ }
63
+ }
64
+
65
+ .fullscreen > .common-modal {
66
+ position: fixed;
67
+ top: 0;
68
+ left: 0;
69
+ right: 0;
70
+ bottom: 0;
71
+ width: 100%;
72
+ max-width: none;
73
+ padding: 0;
74
+ border-radius: 0;
75
+ display: flex;
76
+ flex-direction: column;
77
+ }
78
+
79
+ .fullscreen > .common-modal > .common-modal-header {
80
+ background-color: var(--primary-color);
81
+ color: white;
82
+ margin-bottom: 0;
83
+
84
+ .common-modal-back {
85
+ font-size: 1.2rem;
86
+ font-weight: 600;
87
+
88
+ .common-button.men .fas {
89
+
90
+ }
91
+ }
92
+
93
+ .common-modal-title {
94
+ display: flex;
95
+ justify-content: center;
96
+ align-items: center;
97
+ }
98
+ }
99
+
100
+ .fullscreen > .common-modal > .common-modal-body {
101
+ flex-grow: 1;
102
+ background-color: var(--body-background-color);
103
+ padding: 1rem;
104
+ max-height: unset;
105
+ }
@@ -0,0 +1,24 @@
1
+ // This is mostly taken from fluentui
2
+ .common-spinner {
3
+ box-sizing: border-box;
4
+ border-radius: 50%;
5
+ border-width: 1.5px;
6
+ border-style: solid;
7
+ border-color: rgb(0, 120, 212) rgb(199, 224, 244) rgb(199, 224, 244);
8
+ border-image: initial;
9
+ animation-name: spinner-rotate;
10
+ animation-duration: 1.3s;
11
+ animation-iteration-count: infinite;
12
+ animation-timing-function: cubic-bezier(0.53, 0.21, 0.29, 0.67);
13
+ width: 20px;
14
+ height: 20px;
15
+ }
16
+
17
+ @keyframes spinner-rotate {
18
+ 0% {
19
+ transform: rotate(0deg);
20
+ }
21
+ 100% {
22
+ transform: rotate(360deg);
23
+ }
24
+ }
@@ -303,6 +303,18 @@
303
303
  font-family: var(--body-font-family);
304
304
  }
305
305
 
306
+ .common-checkbox.loading {
307
+ input {
308
+ opacity: 0;
309
+ }
310
+
311
+ .common-spinner {
312
+ display: inline-block;
313
+ position: absolute;
314
+ left: 0px;
315
+ }
316
+ }
317
+
306
318
  @media only screen and (max-width: 1200px) and (min-width: 992px) {
307
319
  .profile-badges, .profile-badges-background {
308
320
  background-size: 25%;
@@ -1,12 +1,47 @@
1
+ @commonTextColor: rgb(50, 49, 48);
2
+ @commonBorderColor: rgb(96, 94, 92);
3
+ @commonBackgroundDisabledColor: rgb(243, 242, 241);
4
+
1
5
  /****************************************************
2
6
  * Buttons *
3
7
  ****************************************************/
4
8
 
5
- @buttonTextColor: rgb(50, 49, 48);
9
+ @buttonTextColor: @commonTextColor;
6
10
  @buttonTextColorInverted: @white;
7
11
  @buttonBackgroundColor: @white;
8
- @buttonBackgroundColorDisabled: rgb(243, 242, 241);
12
+ @buttonBackgroundColorDisabled: @commonBackgroundDisabledColor;
9
13
 
10
14
  @buttonMenuTextColor: #ffffff;
11
15
  @buttonMenuTextColorInverted: @primaryColor;
12
- @buttonMenuBackgroundColorInverted: @buttonMenuTextColor;
16
+ @buttonMenuBackgroundColorInverted: @buttonMenuTextColor;
17
+ @buttonFocusOutline: @buttonTextColorInverted solid 1px;;
18
+ @buttonFocusOutlineInverted: @commonBorderColor solid 1px;
19
+
20
+ /****************************************************
21
+ * Modals *
22
+ ****************************************************/
23
+
24
+ @modalCloseColor: #333333;
25
+ @modalBodyBackgroundColor: #ffffff;
26
+ @modalHeaderBackgroundColor: @modalBodyBackgroundColor;
27
+ @modalFooterBackgroundColor: #f9fafb;
28
+ @modalSeparatorBorder: 1px solid rgba(34, 36, 38, .15);
29
+
30
+ /****************************************************
31
+ * Checkboxes *
32
+ ****************************************************/
33
+
34
+ @checkboxFocusOutline: @commonBorderColor solid 1px;
35
+
36
+ /****************************************************
37
+ * Inputs *
38
+ ****************************************************/
39
+
40
+ @inputTextColor: @commonTextColor;
41
+ @inputTextColorDisabled: rgb(161, 159, 157);
42
+ @inputBorderColor: @commonBorderColor;
43
+ @inputBorderColorFocus: rgb(0, 120, 212);
44
+ @inputBackgroundColor: #ffffff;
45
+ @inputBackgroundColorDisabled: @commonBackgroundDisabledColor;
46
+ @inputButtonColor: rgb(0, 120, 212);
47
+ @inputButtonColorHover: rgb(16, 110, 190);
@@ -1,6 +1,10 @@
1
1
  @import "profile/profile.less";
2
2
  @import "controls/Button.less";
3
+ @import "controls/Checkbox.less";
3
4
  @import "controls/Icon.less";
5
+ @import "controls/Input.less";
6
+ @import "controls/Modal.less";
7
+ @import "controls/Spinner.less";
4
8
  @import "./react-common-variables.less";
5
9
 
6
10
  @import "fontawesome-free/less/solid.less";
@@ -10,6 +10,7 @@
10
10
  height: 100%;
11
11
  border-right: 1px solid @assetSidebarBorder;
12
12
  overflow-y: auto;
13
+ z-index: 1;
13
14
  }
14
15
 
15
16
  .asset-editor-sidebar-info {
@@ -159,31 +160,22 @@
159
160
  }
160
161
  }
161
162
 
162
- .asset-editor-button {
163
- padding: .7em 2em .85em;
164
- text-align: center;
165
- background-color: @assetSidebarButton;
166
- font-size: 1rem;
167
- box-shadow: inset 0 0 0 1px rgba(34,36,38,.15), inset 0 -0.3em 0 0 rgba(34,36,38,.15);
168
- cursor: pointer;
169
- }
170
-
171
- .asset-editor-button.disabled,
172
- .asset-editor-button.disabled:hover {
173
- color: darken(@assetSidebarButtonHover, 20%);
174
- background-color: @assetSidebarButtonHover;
175
- cursor: not-allowed;
163
+ .asset-editor-sidebar-controls > .common-list-item {
164
+ display: flex;
176
165
  }
177
166
 
178
- .asset-editor-button:hover {
179
- background-color: @assetSidebarButtonHover;
167
+ .asset-editor-button {
168
+ flex: 1;
169
+ box-shadow: inset 0 0 0 1px rgba(34,36,38,.15), inset 0 -0.3em 0 0 rgba(34,36,38,.15);
180
170
  }
181
171
 
182
- .asset-editor-button[data-tooltip]:hover:after {
183
- z-index: @sidedocZIndex;
172
+ .delete-asset.common-button {
173
+ flex: 1;
174
+ background: none transparent;
175
+ border: none;
184
176
  }
185
177
 
186
- .create-new {
178
+ .create-new.common-button {
187
179
  color: @white;
188
180
  background-color: @green;
189
181
  font-weight: 700;
@@ -191,7 +183,7 @@
191
183
  flex-direction: column;
192
184
  justify-content: center;
193
185
  align-items: center;
194
- border-width: 0;
186
+ margin: 1rem 0 0 1rem;
195
187
 
196
188
  i.icon {
197
189
  margin: 0;
@@ -207,14 +199,6 @@
207
199
  background-color: @assetUnselected;
208
200
  }
209
201
 
210
- .delete-asset {
211
- margin: 0.5rem;
212
- text-align: center;
213
- font-size: 0.9rem;
214
- cursor: pointer;
215
- opacity: 0.9;
216
- }
217
-
218
202
  .asset-editor-create-options {
219
203
  display: flex;
220
204
  flex-wrap: wrap;
@@ -222,7 +206,7 @@
222
206
  justify-content: space-around;
223
207
  }
224
208
 
225
- .asset-editor-create-button {
209
+ .asset-editor-create-button.common-button {
226
210
  display: flex;
227
211
  flex-direction: column;
228
212
  justify-content: center;
@@ -7,7 +7,7 @@
7
7
  <link rel="stylesheet" data-rtl="/blb/rtlsemantic.css" href="/blb/semantic.css">
8
8
  <link rel="stylesheet" href="/blb/icons.css">
9
9
  <link rel="stylesheet" href="/blb/react-common-skillmap.css">
10
- <link href="/blb/skillmap/css/main.369ecead.chunk.css" rel="stylesheet"></head>
10
+ <link href="/blb/skillmap/css/main.b2b69d60.chunk.css" rel="stylesheet"></head>
11
11
  <body>
12
12
  <noscript>You need to enable JavaScript to run this app.</noscript>
13
13
 
@@ -28,5 +28,5 @@
28
28
  <!-- end usabilla live embed code -->
29
29
 
30
30
  <!-- @include thin-footer.html -->
31
- <script>!function(e){function r(r){for(var n,l,i=r[0],a=r[1],p=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,p||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var a=t[i];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this.webpackJsonpskillsmap=this.webpackJsonpskillsmap||[],a=i.push.bind(i);i.push=r,i=i.slice();for(var p=0;p<i.length;p++)r(i[p]);var f=a;t()}([])</script><script src="/blb/skillmap/js/2.dc66e964.chunk.js"></script><script src="/blb/skillmap/js/main.e89a1af7.chunk.js"></script></body>
31
+ <script>!function(e){function r(r){for(var n,l,i=r[0],a=r[1],p=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,p||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var a=t[i];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={1:0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this.webpackJsonpskillsmap=this.webpackJsonpskillsmap||[],a=i.push.bind(i);i.push=r,i=i.slice();for(var p=0;p<i.length;p++)r(i[p]);var f=a;t()}([])</script><script src="/blb/skillmap/js/2.fce3190c.chunk.js"></script><script src="/blb/skillmap/js/main.9d64b2d7.chunk.js"></script></body>
32
32
  </html>