datocms-react-ui 0.3.14 → 0.3.19

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 (199) hide show
  1. package/dist/cjs/Button/styles.module.css.json +1 -1
  2. package/dist/cjs/ButtonGroup/Button/index.js +19 -0
  3. package/dist/cjs/ButtonGroup/Button/index.js.map +1 -0
  4. package/dist/cjs/ButtonGroup/Button/styles.module.css.json +1 -0
  5. package/dist/cjs/ButtonGroup/Group/index.js +29 -0
  6. package/dist/cjs/ButtonGroup/Group/index.js.map +1 -0
  7. package/dist/cjs/ButtonGroup/Group/styles.module.css.json +1 -0
  8. package/dist/cjs/ButtonGroup/index.js +8 -0
  9. package/dist/cjs/ButtonGroup/index.js.map +1 -0
  10. package/dist/cjs/Canvas/index.js +16 -27
  11. package/dist/cjs/Canvas/index.js.map +1 -1
  12. package/dist/cjs/Canvas/styles.module.css.json +1 -1
  13. package/dist/cjs/Dropdown/Dropdown.js +166 -0
  14. package/dist/cjs/Dropdown/Dropdown.js.map +1 -0
  15. package/dist/cjs/Dropdown/DropdownContext.js +9 -0
  16. package/dist/cjs/Dropdown/DropdownContext.js.map +1 -0
  17. package/dist/cjs/Dropdown/Group.js +16 -0
  18. package/dist/cjs/Dropdown/Group.js.map +1 -0
  19. package/dist/cjs/Dropdown/Menu.js +250 -0
  20. package/dist/cjs/Dropdown/Menu.js.map +1 -0
  21. package/dist/cjs/Dropdown/MenuContext.js +12 -0
  22. package/dist/cjs/Dropdown/MenuContext.js.map +1 -0
  23. package/dist/cjs/Dropdown/Option.js +100 -0
  24. package/dist/cjs/Dropdown/Option.js.map +1 -0
  25. package/dist/cjs/Dropdown/OptionAction.js +29 -0
  26. package/dist/cjs/Dropdown/OptionAction.js.map +1 -0
  27. package/dist/cjs/Dropdown/Portal.js +53 -0
  28. package/dist/cjs/Dropdown/Portal.js.map +1 -0
  29. package/dist/cjs/Dropdown/Separator.js +37 -0
  30. package/dist/cjs/Dropdown/Separator.js.map +1 -0
  31. package/dist/cjs/Dropdown/Text.js +14 -0
  32. package/dist/cjs/Dropdown/Text.js.map +1 -0
  33. package/dist/cjs/Dropdown/index.js +18 -0
  34. package/dist/cjs/Dropdown/index.js.map +1 -0
  35. package/dist/cjs/Dropdown/styles.module.css.json +1 -0
  36. package/dist/cjs/Form/index.js +19 -0
  37. package/dist/cjs/Form/index.js.map +1 -1
  38. package/dist/cjs/SidebarPanel/index.js +88 -0
  39. package/dist/cjs/SidebarPanel/index.js.map +1 -0
  40. package/dist/cjs/SidebarPanel/styles.module.css.json +1 -0
  41. package/dist/cjs/Spinner/index.js +64 -0
  42. package/dist/cjs/Spinner/index.js.map +1 -0
  43. package/dist/cjs/Spinner/styles.module.css.json +1 -0
  44. package/dist/cjs/Toolbar/Button/index.js +15 -0
  45. package/dist/cjs/Toolbar/Button/index.js.map +1 -0
  46. package/dist/cjs/Toolbar/Button/styles.module.css.json +1 -0
  47. package/dist/cjs/Toolbar/Stack/index.js +19 -0
  48. package/dist/cjs/Toolbar/Stack/index.js.map +1 -0
  49. package/dist/cjs/Toolbar/Stack/styles.module.css.json +1 -0
  50. package/dist/cjs/Toolbar/Title/index.js +15 -0
  51. package/dist/cjs/Toolbar/Title/index.js.map +1 -0
  52. package/dist/cjs/Toolbar/Title/styles.module.css.json +1 -0
  53. package/dist/cjs/Toolbar/Toolbar/index.js +99 -0
  54. package/dist/cjs/Toolbar/Toolbar/index.js.map +1 -0
  55. package/dist/cjs/Toolbar/Toolbar/styles.module.css.json +1 -0
  56. package/dist/cjs/Toolbar/index.js +12 -0
  57. package/dist/cjs/Toolbar/index.js.map +1 -0
  58. package/dist/cjs/generateStyleFromCtx/index.js +32 -0
  59. package/dist/cjs/generateStyleFromCtx/index.js.map +1 -0
  60. package/dist/cjs/icons.js +38 -0
  61. package/dist/cjs/icons.js.map +1 -0
  62. package/dist/cjs/index.js +6 -0
  63. package/dist/cjs/index.js.map +1 -1
  64. package/dist/cjs/mergeRefs/index.js +19 -0
  65. package/dist/cjs/mergeRefs/index.js.map +1 -0
  66. package/dist/cjs/useClickOutside/index.js +24 -0
  67. package/dist/cjs/useClickOutside/index.js.map +1 -0
  68. package/dist/cjs/useMediaQuery/index.js +149 -0
  69. package/dist/cjs/useMediaQuery/index.js.map +1 -0
  70. package/dist/esm/Button/styles.module.css.json +1 -1
  71. package/dist/esm/ButtonGroup/Button/index.d.ts +10 -0
  72. package/dist/esm/ButtonGroup/Button/index.js +12 -0
  73. package/dist/esm/ButtonGroup/Button/index.js.map +1 -0
  74. package/dist/esm/ButtonGroup/Button/styles.module.css.json +1 -0
  75. package/dist/esm/ButtonGroup/Group/index.d.ts +21 -0
  76. package/dist/esm/ButtonGroup/Group/index.js +22 -0
  77. package/dist/esm/ButtonGroup/Group/index.js.map +1 -0
  78. package/dist/esm/ButtonGroup/Group/styles.module.css.json +1 -0
  79. package/dist/esm/ButtonGroup/index.d.ts +4 -0
  80. package/dist/esm/ButtonGroup/index.js +3 -0
  81. package/dist/esm/ButtonGroup/index.js.map +1 -0
  82. package/dist/esm/Canvas/index.d.ts +7 -3
  83. package/dist/esm/Canvas/index.js +16 -28
  84. package/dist/esm/Canvas/index.js.map +1 -1
  85. package/dist/esm/Canvas/styles.module.css.json +1 -1
  86. package/dist/esm/Dropdown/Dropdown.d.ts +113 -0
  87. package/dist/esm/Dropdown/Dropdown.js +140 -0
  88. package/dist/esm/Dropdown/Dropdown.js.map +1 -0
  89. package/dist/esm/Dropdown/DropdownContext.d.ts +6 -0
  90. package/dist/esm/Dropdown/DropdownContext.js +6 -0
  91. package/dist/esm/Dropdown/DropdownContext.js.map +1 -0
  92. package/dist/esm/Dropdown/Group.d.ts +6 -0
  93. package/dist/esm/Dropdown/Group.js +9 -0
  94. package/dist/esm/Dropdown/Group.js.map +1 -0
  95. package/dist/esm/Dropdown/Menu.d.ts +6 -0
  96. package/dist/esm/Dropdown/Menu.js +224 -0
  97. package/dist/esm/Dropdown/Menu.js.map +1 -0
  98. package/dist/esm/Dropdown/MenuContext.d.ts +8 -0
  99. package/dist/esm/Dropdown/MenuContext.js +9 -0
  100. package/dist/esm/Dropdown/MenuContext.js.map +1 -0
  101. package/dist/esm/Dropdown/Option.d.ts +13 -0
  102. package/dist/esm/Dropdown/Option.js +74 -0
  103. package/dist/esm/Dropdown/Option.js.map +1 -0
  104. package/dist/esm/Dropdown/OptionAction.d.ts +11 -0
  105. package/dist/esm/Dropdown/OptionAction.js +22 -0
  106. package/dist/esm/Dropdown/OptionAction.js.map +1 -0
  107. package/dist/esm/Dropdown/Portal.d.ts +4 -0
  108. package/dist/esm/Dropdown/Portal.js +27 -0
  109. package/dist/esm/Dropdown/Portal.js.map +1 -0
  110. package/dist/esm/Dropdown/Separator.d.ts +2 -0
  111. package/dist/esm/Dropdown/Separator.js +11 -0
  112. package/dist/esm/Dropdown/Separator.js.map +1 -0
  113. package/dist/esm/Dropdown/Text.d.ts +5 -0
  114. package/dist/esm/Dropdown/Text.js +7 -0
  115. package/dist/esm/Dropdown/Text.js.map +1 -0
  116. package/dist/esm/Dropdown/index.d.ts +9 -0
  117. package/dist/esm/Dropdown/index.js +9 -0
  118. package/dist/esm/Dropdown/index.js.map +1 -0
  119. package/dist/esm/Dropdown/styles.module.css.json +1 -0
  120. package/dist/esm/Form/index.d.ts +19 -0
  121. package/dist/esm/Form/index.js +19 -0
  122. package/dist/esm/Form/index.js.map +1 -1
  123. package/dist/esm/SidebarPanel/index.d.ts +43 -0
  124. package/dist/esm/SidebarPanel/index.js +62 -0
  125. package/dist/esm/SidebarPanel/index.js.map +1 -0
  126. package/dist/esm/SidebarPanel/styles.module.css.json +1 -0
  127. package/dist/esm/Spinner/index.d.ts +27 -0
  128. package/dist/esm/Spinner/index.js +57 -0
  129. package/dist/esm/Spinner/index.js.map +1 -0
  130. package/dist/esm/Spinner/styles.module.css.json +1 -0
  131. package/dist/esm/Toolbar/Button/index.d.ts +8 -0
  132. package/dist/esm/Toolbar/Button/index.js +8 -0
  133. package/dist/esm/Toolbar/Button/index.js.map +1 -0
  134. package/dist/esm/Toolbar/Button/styles.module.css.json +1 -0
  135. package/dist/esm/Toolbar/Stack/index.d.ts +8 -0
  136. package/dist/esm/Toolbar/Stack/index.js +12 -0
  137. package/dist/esm/Toolbar/Stack/index.js.map +1 -0
  138. package/dist/esm/Toolbar/Stack/styles.module.css.json +1 -0
  139. package/dist/esm/Toolbar/Title/index.d.ts +7 -0
  140. package/dist/esm/Toolbar/Title/index.js +8 -0
  141. package/dist/esm/Toolbar/Title/index.js.map +1 -0
  142. package/dist/esm/Toolbar/Title/styles.module.css.json +1 -0
  143. package/dist/esm/Toolbar/Toolbar/index.d.ts +91 -0
  144. package/dist/esm/Toolbar/Toolbar/index.js +92 -0
  145. package/dist/esm/Toolbar/Toolbar/index.js.map +1 -0
  146. package/dist/esm/Toolbar/Toolbar/styles.module.css.json +1 -0
  147. package/dist/esm/Toolbar/index.d.ts +8 -0
  148. package/dist/esm/Toolbar/index.js +5 -0
  149. package/dist/esm/Toolbar/index.js.map +1 -0
  150. package/dist/esm/generateStyleFromCtx/index.d.ts +3 -0
  151. package/dist/esm/generateStyleFromCtx/index.js +28 -0
  152. package/dist/esm/generateStyleFromCtx/index.js.map +1 -0
  153. package/dist/esm/icons.d.ts +12 -0
  154. package/dist/esm/icons.js +27 -0
  155. package/dist/esm/icons.js.map +1 -0
  156. package/dist/esm/index.d.ts +6 -0
  157. package/dist/esm/index.js +6 -0
  158. package/dist/esm/index.js.map +1 -1
  159. package/dist/esm/mergeRefs/index.d.ts +2 -0
  160. package/dist/esm/mergeRefs/index.js +15 -0
  161. package/dist/esm/mergeRefs/index.js.map +1 -0
  162. package/dist/esm/useClickOutside/index.d.ts +2 -0
  163. package/dist/esm/useClickOutside/index.js +21 -0
  164. package/dist/esm/useClickOutside/index.js.map +1 -0
  165. package/dist/esm/useMediaQuery/index.d.ts +8 -0
  166. package/dist/esm/useMediaQuery/index.js +140 -0
  167. package/dist/esm/useMediaQuery/index.js.map +1 -0
  168. package/dist/types/ButtonGroup/Button/index.d.ts +10 -0
  169. package/dist/types/ButtonGroup/Group/index.d.ts +21 -0
  170. package/dist/types/ButtonGroup/index.d.ts +4 -0
  171. package/dist/types/Canvas/index.d.ts +7 -3
  172. package/dist/types/Dropdown/Dropdown.d.ts +113 -0
  173. package/dist/types/Dropdown/DropdownContext.d.ts +6 -0
  174. package/dist/types/Dropdown/Group.d.ts +6 -0
  175. package/dist/types/Dropdown/Menu.d.ts +6 -0
  176. package/dist/types/Dropdown/MenuContext.d.ts +8 -0
  177. package/dist/types/Dropdown/Option.d.ts +13 -0
  178. package/dist/types/Dropdown/OptionAction.d.ts +11 -0
  179. package/dist/types/Dropdown/Portal.d.ts +4 -0
  180. package/dist/types/Dropdown/Separator.d.ts +2 -0
  181. package/dist/types/Dropdown/Text.d.ts +5 -0
  182. package/dist/types/Dropdown/index.d.ts +9 -0
  183. package/dist/types/Form/index.d.ts +19 -0
  184. package/dist/types/SidebarPanel/index.d.ts +43 -0
  185. package/dist/types/Spinner/index.d.ts +27 -0
  186. package/dist/types/Toolbar/Button/index.d.ts +8 -0
  187. package/dist/types/Toolbar/Stack/index.d.ts +8 -0
  188. package/dist/types/Toolbar/Title/index.d.ts +7 -0
  189. package/dist/types/Toolbar/Toolbar/index.d.ts +91 -0
  190. package/dist/types/Toolbar/index.d.ts +8 -0
  191. package/dist/types/generateStyleFromCtx/index.d.ts +3 -0
  192. package/dist/types/icons.d.ts +12 -0
  193. package/dist/types/index.d.ts +6 -0
  194. package/dist/types/mergeRefs/index.d.ts +2 -0
  195. package/dist/types/useClickOutside/index.d.ts +2 -0
  196. package/dist/types/useMediaQuery/index.d.ts +8 -0
  197. package/package.json +8 -5
  198. package/styles.css +1 -1
  199. package/types.json +4688 -1844
@@ -1 +1 @@
1
- { "button": "_button_ya5s7_1", "disabled": "_disabled_ya5s7_30", "buttonType-muted": "_buttonType-muted_ya5s7_36", "buttonType-primary": "_buttonType-primary_ya5s7_41", "buttonType-negative": "_buttonType-negative_ya5s7_62", "buttonSize-xxs": "_buttonSize-xxs_ya5s7_79", "buttonSize-xs": "_buttonSize-xs_ya5s7_84", "buttonSize-s": "_buttonSize-s_ya5s7_89", "buttonSize-m": "_buttonSize-m_ya5s7_94", "buttonSize-l": "_buttonSize-l_ya5s7_99", "buttonSize-xl": "_buttonSize-xl_ya5s7_104", "fullWidth": "_fullWidth_ya5s7_109", "button__leftIcon": "_button__leftIcon_ya5s7_115", "button__rightIcon": "_button__rightIcon_ya5s7_116" }
1
+ { "button": "_button_474wk_1", "disabled": "_disabled_474wk_30", "buttonType-muted": "_buttonType-muted_474wk_34", "buttonType-primary": "_buttonType-primary_474wk_50", "buttonType-negative": "_buttonType-negative_474wk_71", "buttonSize-xxs": "_buttonSize-xxs_474wk_88", "buttonSize-xs": "_buttonSize-xs_474wk_93", "buttonSize-s": "_buttonSize-s_474wk_98", "buttonSize-m": "_buttonSize-m_474wk_103", "buttonSize-l": "_buttonSize-l_474wk_108", "buttonSize-xl": "_buttonSize-xl_474wk_113", "fullWidth": "_fullWidth_474wk_118", "button__leftIcon": "_button__leftIcon_474wk_124", "button__rightIcon": "_button__rightIcon_474wk_125" }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Button = void 0;
7
+ var classnames_1 = __importDefault(require("classnames"));
8
+ var react_1 = __importDefault(require("react"));
9
+ var styles_module_css_json_1 = __importDefault(require("./styles.module.css.json"));
10
+ function Button(_a) {
11
+ var _b;
12
+ var children = _a.children, style = _a.style, className = _a.className, selected = _a.selected, disabled = _a.disabled, onClick = _a.onClick;
13
+ return (react_1.default.createElement("button", { type: "button", onClick: onClick, disabled: disabled, className: (0, classnames_1.default)(styles_module_css_json_1.default['Button'], (_b = {},
14
+ _b[styles_module_css_json_1.default['Button--selected']] = selected,
15
+ _b[styles_module_css_json_1.default['Button--disabled']] = disabled,
16
+ _b), className), style: style }, children));
17
+ }
18
+ exports.Button = Button;
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ButtonGroup/Button/index.tsx"],"names":[],"mappings":";;;;;;AAAA,0DAAoC;AACpC,gDAA2E;AAC3E,oFAAyC;AAWzC,SAAgB,MAAM,CAAC,EAOT;;QANZ,QAAQ,cAAA,EACR,KAAK,WAAA,EACL,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,OAAO,aAAA;IAEP,OAAO,CACL,0CACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,IAAA,oBAAU,EACnB,gCAAC,CAAC,QAAQ,CAAC;YAET,GAAC,gCAAC,CAAC,kBAAkB,CAAC,IAAG,QAAQ;YACjC,GAAC,gCAAC,CAAC,kBAAkB,CAAC,IAAG,QAAQ;iBAEnC,SAAS,CACV,EACD,KAAK,EAAE,KAAK,IAEX,QAAQ,CACF,CACV,CAAC;AACJ,CAAC;AA1BD,wBA0BC"}
@@ -0,0 +1 @@
1
+ { "Button": "_Button_1h1w1_1", "Button--s": "_Button--s_1h1w1_32", "Button--disabled": "_Button--disabled_1h1w1_36", "Button--selected": "_Button--selected_1h1w1_45" }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Group = void 0;
7
+ var classnames_1 = __importDefault(require("classnames"));
8
+ var react_1 = __importDefault(require("react"));
9
+ var styles_module_css_json_1 = __importDefault(require("./styles.module.css.json"));
10
+ /**
11
+ * @example Basic example
12
+ *
13
+ * ```js
14
+ * <Canvas ctx={ctx}>
15
+ * <ButtonGroup>
16
+ * <ButtonGroupButton>First</ButtonGroupButton>
17
+ * <ButtonGroupButton selected>Second</ButtonGroupButton>
18
+ * <ButtonGroupButton>Third</ButtonGroupButton>
19
+ * <ButtonGroupButton disabled>Fourth</ButtonGroupButton>
20
+ * </ButtonGroup>
21
+ * </Canvas>;
22
+ * ```
23
+ */
24
+ function Group(_a) {
25
+ var children = _a.children, style = _a.style, className = _a.className;
26
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)(styles_module_css_json_1.default['Group'], className), style: style }, children));
27
+ }
28
+ exports.Group = Group;
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ButtonGroup/Group/index.tsx"],"names":[],"mappings":";;;;;;AAAA,0DAAoC;AACpC,gDAAwD;AACxD,oFAAyC;AAQzC;;;;;;;;;;;;;GAaG;AACH,SAAgB,KAAK,CAAC,EAA0C;QAAxC,QAAQ,cAAA,EAAE,KAAK,WAAA,EAAE,SAAS,eAAA;IAChD,OAAO,CACL,uCAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,gCAAC,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,IAC5D,QAAQ,CACL,CACP,CAAC;AACJ,CAAC;AAND,sBAMC"}
@@ -0,0 +1 @@
1
+ { "Group": "_Group_10mj4_1" }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ButtonGroupButton = exports.ButtonGroup = void 0;
4
+ var Group_1 = require("./Group");
5
+ Object.defineProperty(exports, "ButtonGroup", { enumerable: true, get: function () { return Group_1.Group; } });
6
+ var Button_1 = require("./Button");
7
+ Object.defineProperty(exports, "ButtonGroupButton", { enumerable: true, get: function () { return Button_1.Button; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ButtonGroup/index.ts"],"names":[],"mappings":";;;AAAA,iCAA+C;AAAtC,oGAAA,KAAK,OAAe;AAE7B,mCAAuD;AAA9C,2GAAA,MAAM,OAAqB"}
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
3
  if (k2 === undefined) k2 = k;
15
4
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -33,15 +22,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
34
23
  };
35
24
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Canvas = void 0;
25
+ exports.Canvas = exports.useCtx = exports.CtxContext = void 0;
37
26
  var react_1 = __importStar(require("react"));
38
27
  var styles_module_css_json_1 = __importDefault(require("./styles.module.css.json"));
39
- function camelToDash(str) {
40
- if (str != str.toLowerCase()) {
41
- str = str.replace(/[A-Z]/g, function (m) { return '-' + m.toLowerCase(); });
28
+ var generateStyleFromCtx_1 = require("../generateStyleFromCtx");
29
+ var classnames_1 = __importDefault(require("classnames"));
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+ exports.CtxContext = (0, react_1.createContext)(null);
32
+ function useCtx() {
33
+ var ctx = (0, react_1.useContext)(exports.CtxContext);
34
+ if (!ctx) {
35
+ throw new Error('useCtx requires <Canvas />!');
42
36
  }
43
- return str;
37
+ return ctx;
44
38
  }
39
+ exports.useCtx = useCtx;
45
40
  /**
46
41
  * @example Color palette CSS variables
47
42
  *
@@ -540,20 +535,14 @@ function Canvas(_a) {
540
535
  if (mode !== 'renderPage' && !noAutoResizer) {
541
536
  var ctxWithAutoResizer_1 = ctx;
542
537
  ctxWithAutoResizer_1.startAutoResizer();
543
- (function () {
538
+ return function () {
544
539
  ctxWithAutoResizer_1.stopAutoResizer();
545
- });
540
+ };
546
541
  }
542
+ return undefined;
547
543
  }, [mode, noAutoResizer]);
548
- var style = Object.entries(ctx.theme).reduce(function (acc, _a) {
549
- var _b;
550
- var _c;
551
- var k = _a[0], v = _a[1];
552
- return __assign(__assign({}, acc), (_b = {}, _b["--" + camelToDash(k)] = v, _b["--" + camelToDash(k + "RgbComponents")] = ((_c = v.match(/rgb\((\d+, \d+, \d+)\)/)) === null || _c === void 0 ? void 0 : _c[1]) || undefined, _b));
553
- }, {
554
- padding: ctx.bodyPadding.map(function (p) { return p + "px"; }).join(' '),
555
- });
556
- return (react_1.default.createElement("div", { className: styles_module_css_json_1.default.canvas, style: style }, children));
544
+ return (react_1.default.createElement(exports.CtxContext.Provider, { value: ctx },
545
+ react_1.default.createElement("div", { className: (0, classnames_1.default)(styles_module_css_json_1.default['themeVariables'], styles_module_css_json_1.default['canvas']), style: (0, generateStyleFromCtx_1.generateStyleFromCtx)(ctx) }, children)));
557
546
  }
558
547
  exports.Canvas = Canvas;
559
548
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Canvas/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAoD;AAEpD,oFAA8C;AAE9C,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE;QAC5B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,EAArB,CAAqB,CAAC,CAAC;KAC3D;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0eG;AAEH,SAAgB,MAAM,CAAC,EAIT;QAHZ,GAAG,SAAA,EACH,QAAQ,cAAA,EACR,aAAa,mBAAA;IAEL,IAAA,IAAI,GAAM,GAAmC,KAAzC,CAA0C;IAEtD,IAAA,iBAAS,EAAC;QACR,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,aAAa,EAAE;YAC3C,IAAM,oBAAkB,GAAI,GAAkC,CAAC;YAC/D,oBAAkB,CAAC,gBAAgB,EAAE,CAAC;YAEtC,CAAA;gBACE,oBAAkB,CAAC,eAAe,EAAE,CAAC;YACvC,CAAC,CAAA,CAAC;SACH;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1B,IAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAC5C,UAAC,GAAG,EAAE,EAAM;;;YAAL,CAAC,QAAA,EAAE,CAAC,QAAA;QACT,6BACK,GAAG,gBACL,OAAK,WAAW,CAAC,CAAC,CAAG,IAAG,CAAC,KACzB,OAAK,WAAW,CAAI,CAAC,kBAAe,CAAG,IACtC,CAAA,MAAA,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,0CAAG,CAAC,CAAC,KAAI,SAAS,OACrD;IACJ,CAAC,EACD;QACE,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAG,CAAC,OAAI,EAAR,CAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACxD,CACF,CAAC;IAEF,OAAO,CACL,uCAAK,SAAS,EAAE,gCAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IACxC,QAAQ,CACL,CACP,CAAC;AACJ,CAAC;AArCD,wBAqCC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Canvas/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+E;AAM/E,oFAAyC;AACzC,gEAA+D;AAC/D,0DAAoC;AAIpC,8DAA8D;AACjD,QAAA,UAAU,GAAG,IAAA,qBAAa,EACrC,IAAI,CACL,CAAC;AAEF,SAAgB,MAAM;IACpB,IAAM,GAAG,GAAG,IAAA,kBAAU,EAAC,kBAAU,CAAC,CAAC;IAEnC,IAAI,CAAC,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAChD;IAED,OAAO,GAAQ,CAAC;AAClB,CAAC;AARD,wBAQC;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0eG;AAEH,SAAgB,MAAM,CAAC,EAIT;QAHZ,GAAG,SAAA,EACH,QAAQ,cAAA,EACR,aAAa,mBAAA;IAEL,IAAA,IAAI,GAAM,GAAmC,KAAzC,CAA0C;IAEtD,IAAA,iBAAS,EAAC;QACR,IAAI,IAAI,KAAK,YAAY,IAAI,CAAC,aAAa,EAAE;YAC3C,IAAM,oBAAkB,GAAI,GAAkC,CAAC;YAC/D,oBAAkB,CAAC,gBAAgB,EAAE,CAAC;YAEtC,OAAO;gBACL,oBAAkB,CAAC,eAAe,EAAE,CAAC;YACvC,CAAC,CAAC;SACH;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAE1B,OAAO,CACL,8BAAC,kBAAU,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG;QAC7B,uCACE,SAAS,EAAE,IAAA,oBAAU,EAAC,gCAAC,CAAC,gBAAgB,CAAC,EAAE,gCAAC,CAAC,QAAQ,CAAC,CAAC,EACvD,KAAK,EAAE,IAAA,2CAAoB,EAAC,GAAG,CAAC,IAE/B,QAAQ,CACL,CACc,CACvB,CAAC;AACJ,CAAC;AA9BD,wBA8BC"}
@@ -1 +1 @@
1
- { "canvas": "_canvas_1es76_1" }
1
+ { "themeVariables": "_themeVariables_ovgoa_1", "canvas": "_canvas_ovgoa_68" }
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.Dropdown = void 0;
26
+ var react_1 = __importStar(require("react"));
27
+ var useMediaQuery_1 = require("../useMediaQuery");
28
+ var useClickOutside_1 = __importDefault(require("../useClickOutside"));
29
+ var DropdownContext_1 = require("./DropdownContext");
30
+ var styles_module_css_json_1 = __importDefault(require("./styles.module.css.json"));
31
+ /**
32
+ * @example Basic example
33
+ *
34
+ * ```js
35
+ * <Canvas ctx={ctx}>
36
+ * <Dropdown
37
+ * renderTrigger={({ open, onClick }) => (
38
+ * <Button
39
+ * onClick={onClick}
40
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
41
+ * >
42
+ * Options
43
+ * </Button>
44
+ * )}
45
+ * >
46
+ * <DropdownMenu>
47
+ * <DropdownOption onClick={() => {}}>Edit</DropdownOption>
48
+ * <DropdownOption disabled onClick={() => {}}>
49
+ * Duplicate
50
+ * </DropdownOption>
51
+ * <DropdownSeparator />
52
+ * <DropdownOption red onClick={() => {}}>
53
+ * Delete
54
+ * </DropdownOption>
55
+ * </DropdownMenu>
56
+ * </Dropdown>
57
+ * </Canvas>;
58
+ * ```
59
+ *
60
+ * @example Option actions
61
+ *
62
+ * ```js
63
+ * <Canvas ctx={ctx}>
64
+ * <Dropdown
65
+ * renderTrigger={({ open, onClick }) => (
66
+ * <Button
67
+ * onClick={onClick}
68
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
69
+ * >
70
+ * Fields
71
+ * </Button>
72
+ * )}
73
+ * >
74
+ * <DropdownMenu>
75
+ * <DropdownOption>
76
+ * First option
77
+ * <DropdownOptionAction icon={<PlusIcon />} onClick={() => {}} />
78
+ * <DropdownOptionAction
79
+ * red
80
+ * icon={<TrashIcon />}
81
+ * onClick={() => {}}
82
+ * />
83
+ * </DropdownOption>
84
+ * <DropdownOption>
85
+ * Second option
86
+ * <DropdownOptionAction icon={<PlusIcon />} onClick={() => {}} />
87
+ * <DropdownOptionAction
88
+ * red
89
+ * icon={<TrashIcon />}
90
+ * onClick={() => {}}
91
+ * />
92
+ * </DropdownOption>
93
+ * </DropdownMenu>
94
+ * </Dropdown>
95
+ * </Canvas>;
96
+ * ```
97
+ *
98
+ * @example Option groups
99
+ *
100
+ * ```js
101
+ * <Canvas ctx={ctx}>
102
+ * <Dropdown
103
+ * renderTrigger={({ open, onClick }) => (
104
+ * <Button
105
+ * onClick={onClick}
106
+ * rightIcon={open ? <CaretUpIcon /> : <CaretDownIcon />}
107
+ * >
108
+ * Fields
109
+ * </Button>
110
+ * )}
111
+ * >
112
+ * <DropdownMenu>
113
+ * <DropdownGroup name="Group 1">
114
+ * <DropdownOption>Foo</DropdownOption>
115
+ * <DropdownOption>Bar</DropdownOption>
116
+ * <DropdownOption>Qux</DropdownOption>
117
+ * </DropdownGroup>
118
+ * <DropdownGroup name="Group 2">
119
+ * <DropdownOption>Foo</DropdownOption>
120
+ * <DropdownOption>Bar</DropdownOption>
121
+ * <DropdownOption>Qux</DropdownOption>
122
+ * </DropdownGroup>
123
+ * <DropdownGroup name="Group 3">
124
+ * <DropdownOption>Foo</DropdownOption>
125
+ * <DropdownOption>Bar</DropdownOption>
126
+ * <DropdownOption>Qux</DropdownOption>
127
+ * </DropdownGroup>
128
+ * </DropdownMenu>
129
+ * </Dropdown>
130
+ * </Canvas>;
131
+ * ```
132
+ */
133
+ function Dropdown(_a) {
134
+ var renderTrigger = _a.renderTrigger, children = _a.children;
135
+ var isClickOutsideEnabled = (0, react_1.useRef)();
136
+ var _b = (0, react_1.useState)(false), isOpen = _b[0], setOpen = _b[1];
137
+ (0, react_1.useEffect)(function () {
138
+ isClickOutsideEnabled.current = false;
139
+ }, []);
140
+ var handleClickOutside = (0, react_1.useCallback)(function (event) {
141
+ if (isClickOutsideEnabled.current &&
142
+ !event.target.closest(styles_module_css_json_1.default['Dropdown__menu']) &&
143
+ isOpen) {
144
+ setOpen(false);
145
+ }
146
+ }, [setOpen, isOpen, isClickOutsideEnabled]);
147
+ var outsideRef = (0, useClickOutside_1.default)(handleClickOutside);
148
+ var handleClose = (0, react_1.useCallback)(function () {
149
+ setOpen(false);
150
+ }, [setOpen]);
151
+ var handleToggle = (0, react_1.useCallback)(function () {
152
+ setOpen(function (open) { return !open; });
153
+ }, [setOpen]);
154
+ return (react_1.default.createElement(useMediaQuery_1.MediaQuery, { media: "(max-width: 1024px)" }, function (_a) {
155
+ var matches = _a.matches;
156
+ // In small devices click outside is disabled because
157
+ // the menu goes full screen and has a close button.
158
+ isClickOutsideEnabled.current = !matches;
159
+ return (react_1.default.createElement(DropdownContext_1.DropdownContext.Provider, { value: { closeMenu: handleClose } },
160
+ react_1.default.createElement("div", { className: styles_module_css_json_1.default['Dropdown'], ref: outsideRef },
161
+ renderTrigger({ open: isOpen, onClick: handleToggle }),
162
+ isOpen && children)));
163
+ }));
164
+ }
165
+ exports.Dropdown = Dropdown;
166
+ //# sourceMappingURL=Dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.js","sourceRoot":"","sources":["../../../src/Dropdown/Dropdown.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAwE;AACxE,kDAA8C;AAC9C,uEAAiD;AACjD,qDAAoD;AACpD,oFAAyC;AAYzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AACH,SAAgB,QAAQ,CAAC,EAGT;QAFd,aAAa,mBAAA,EACb,QAAQ,cAAA;IAER,IAAM,qBAAqB,GAAG,IAAA,cAAM,GAAW,CAAC;IAC1C,IAAA,KAAoB,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAlC,MAAM,QAAA,EAAE,OAAO,QAAmB,CAAC;IAE1C,IAAA,iBAAS,EAAC;QACR,qBAAqB,CAAC,OAAO,GAAG,KAAK,CAAC;IACxC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAM,kBAAkB,GAAG,IAAA,mBAAW,EACpC,UAAC,KAAK;QACJ,IACE,qBAAqB,CAAC,OAAO;YAC7B,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gCAAC,CAAC,gBAAgB,CAAC,CAAC;YAC1C,MAAM,EACN;YACA,OAAO,CAAC,KAAK,CAAC,CAAC;SAChB;IACH,CAAC,EACD,CAAC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,CACzC,CAAC;IAEF,IAAM,UAAU,GAAG,IAAA,yBAAe,EAAiB,kBAAkB,CAAC,CAAC;IAEvE,IAAM,WAAW,GAAG,IAAA,mBAAW,EAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAM,YAAY,GAAG,IAAA,mBAAW,EAAC;QAC/B,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,CAAC,IAAI,EAAL,CAAK,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,8BAAC,0BAAU,IAAC,KAAK,EAAC,qBAAqB,IACpC,UAAC,EAAW;YAAT,OAAO,aAAA;QACT,qDAAqD;QACrD,oDAAoD;QACpD,qBAAqB,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC;QAEzC,OAAO,CACL,8BAAC,iCAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;YACzD,uCAAK,SAAS,EAAE,gCAAC,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,UAAU;gBAC3C,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;gBACtD,MAAM,IAAI,QAAQ,CACf,CACmB,CAC5B,CAAC;IACJ,CAAC,CACU,CACd,CAAC;AACJ,CAAC;AApDD,4BAoDC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DropdownContext = void 0;
4
+ var react_1 = require("react");
5
+ exports.DropdownContext = (0, react_1.createContext)({
6
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
7
+ closeMenu: function () { },
8
+ });
9
+ //# sourceMappingURL=DropdownContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownContext.js","sourceRoot":"","sources":["../../../src/Dropdown/DropdownContext.tsx"],"names":[],"mappings":";;;AAAA,+BAAsC;AAMzB,QAAA,eAAe,GAAG,IAAA,qBAAa,EAAsB;IAChE,gEAAgE;IAChE,SAAS,EAAE,cAAO,CAAC;CACpB,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Group = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var styles_module_css_json_1 = __importDefault(require("./styles.module.css.json"));
9
+ var Group = function (_a) {
10
+ var children = _a.children, name = _a.name;
11
+ return (react_1.default.createElement("div", null,
12
+ react_1.default.createElement("div", { className: styles_module_css_json_1.default['Dropdown__menu__group__title'] }, name),
13
+ react_1.default.createElement("div", { className: styles_module_css_json_1.default['Dropdown__menu__group__content'] }, children)));
14
+ };
15
+ exports.Group = Group;
16
+ //# sourceMappingURL=Group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Group.js","sourceRoot":"","sources":["../../../src/Dropdown/Group.tsx"],"names":[],"mappings":";;;;;;AAAA,gDAAyC;AACzC,oFAAyC;AAOlC,IAAM,KAAK,GAAG,UAAC,EAA8B;QAA5B,QAAQ,cAAA,EAAE,IAAI,UAAA;IACpC,OAAO,CACL;QACE,uCAAK,SAAS,EAAE,gCAAC,CAAC,8BAA8B,CAAC,IAAG,IAAI,CAAO;QAC/D,uCAAK,SAAS,EAAE,gCAAC,CAAC,gCAAgC,CAAC,IAAG,QAAQ,CAAO,CACjE,CACP,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,KAAK,SAOhB"}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
33
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
34
+ if (ar || !(i in from)) {
35
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
36
+ ar[i] = from[i];
37
+ }
38
+ }
39
+ return to.concat(ar || Array.prototype.slice.call(from));
40
+ };
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.Menu = void 0;
46
+ var react_1 = __importStar(require("react"));
47
+ var scroll_into_view_if_needed_1 = __importDefault(require("scroll-into-view-if-needed"));
48
+ var react_intersection_observer_1 = require("react-intersection-observer");
49
+ var Portal_1 = require("./Portal");
50
+ var useMediaQuery_1 = require("../useMediaQuery");
51
+ var DropdownContext_1 = require("./DropdownContext");
52
+ var Group_1 = require("./Group");
53
+ var MenuContext_1 = require("./MenuContext");
54
+ var Option_1 = require("./Option");
55
+ var styles_module_css_json_1 = __importDefault(require("./styles.module.css.json"));
56
+ var mergeRefs_1 = require("../mergeRefs");
57
+ var classnames_1 = __importDefault(require("classnames"));
58
+ var MenuMobileContainer = function (_a) {
59
+ var children = _a.children;
60
+ return (react_1.default.createElement(Portal_1.Portal, null,
61
+ react_1.default.createElement("div", { className: styles_module_css_json_1.default['Dropdown__menu__mobile-container'], style: { zIndex: 1000 } },
62
+ react_1.default.createElement("div", { className: styles_module_css_json_1.default['Modal__backdrop'] }),
63
+ children)));
64
+ };
65
+ var MenuDesktopContainer = react_1.default.forwardRef(function (_a, ref) {
66
+ var children = _a.children;
67
+ return (react_1.default.createElement(Portal_1.Portal, null,
68
+ react_1.default.createElement("div", { className: styles_module_css_json_1.default['Dropdown__menu-container'], style: { zIndex: 1000 }, ref: ref }, children)));
69
+ });
70
+ function getAbsoluteHeight(el) {
71
+ var styles = window.getComputedStyle(el);
72
+ var margin = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
73
+ return Math.ceil(el.offsetHeight + margin);
74
+ }
75
+ function getAbsoluteWidth(el) {
76
+ var styles = window.getComputedStyle(el);
77
+ var margin = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
78
+ return Math.ceil(el.offsetWidth + margin);
79
+ }
80
+ function setPosition(panel, parent, alignment) {
81
+ var rect = parent.getBoundingClientRect();
82
+ var height = getAbsoluteHeight(panel);
83
+ var parentWidth = getAbsoluteWidth(parent);
84
+ var width = getAbsoluteWidth(panel);
85
+ if (alignment === 'left') {
86
+ // eslint-disable-next-line no-param-reassign
87
+ panel.style.left = rect.left + window.pageXOffset + "px";
88
+ }
89
+ else {
90
+ // eslint-disable-next-line no-param-reassign
91
+ panel.style.left = rect.left + window.pageXOffset + parentWidth - width + "px";
92
+ }
93
+ var windowHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);
94
+ var menu = panel.querySelector('.' + styles_module_css_json_1.default['Dropdown__menu']);
95
+ if (!menu) {
96
+ return;
97
+ }
98
+ var styles = window.getComputedStyle(menu);
99
+ var marginTop = parseFloat(styles.marginTop);
100
+ var fitsBelow = rect.bottom + height <= windowHeight;
101
+ var fitsAbove = rect.top - height > 0;
102
+ if (!fitsBelow && fitsAbove) {
103
+ // eslint-disable-next-line no-param-reassign
104
+ panel.style.top = rect.bottom - height + "px";
105
+ }
106
+ else if (fitsBelow) {
107
+ // eslint-disable-next-line no-param-reassign
108
+ panel.style.top = rect.bottom + "px";
109
+ }
110
+ else {
111
+ var spaceAbove = rect.top;
112
+ var spaceBelow = windowHeight - rect.bottom;
113
+ if (spaceBelow > spaceAbove) {
114
+ // eslint-disable-next-line no-param-reassign
115
+ panel.style.top = rect.bottom + "px";
116
+ menu.style.maxHeight = windowHeight - rect.bottom - marginTop - 10 + "px";
117
+ }
118
+ else {
119
+ // eslint-disable-next-line no-param-reassign
120
+ panel.style.top = "0px";
121
+ menu.style.maxHeight = rect.top - marginTop + "px";
122
+ }
123
+ }
124
+ // eslint-disable-next-line no-param-reassign
125
+ panel.style.visibility = 'visible';
126
+ }
127
+ var Menu = function (_a) {
128
+ var _b;
129
+ var children = _a.children, _c = _a.alignment, alignment = _c === void 0 ? 'left' : _c;
130
+ var closeMenu = (0, react_1.useContext)(DropdownContext_1.DropdownContext).closeMenu;
131
+ var childrenArray = react_1.default.Children.toArray(children);
132
+ var _d = (0, react_1.useState)(''), searchTerm = _d[0], setSearchTerm = _d[1];
133
+ var _e = (0, react_1.useState)([]), options = _e[0], setOptions = _e[1];
134
+ var handleChange = (0, react_1.useCallback)(function (e) {
135
+ setSearchTerm(e.target.value);
136
+ }, [setSearchTerm]);
137
+ var anyGroup = childrenArray.some(function (child) {
138
+ return typeof child === 'object' && 'type' in child && child.type === Group_1.Group;
139
+ });
140
+ var matches = (0, useMediaQuery_1.useMediaQuery)('(max-width: 1024px)').matches;
141
+ var addOption = (0, react_1.useCallback)(function (id) {
142
+ setOptions(function (old) { return __spreadArray(__spreadArray([], old, true), [{ id: id }], false); });
143
+ return function () {
144
+ setOptions(function (old) { return old.filter(function (x) { return x.id !== id; }); });
145
+ };
146
+ }, [setOptions]);
147
+ var setClickHandlerForOption = (0, react_1.useCallback)(function (id, handler) {
148
+ setOptions(function (old) {
149
+ return old.map(function (x) { return (x.id !== id ? x : __assign(__assign({}, x), { handler: handler })); });
150
+ });
151
+ }, [setOptions]);
152
+ var contentRef = (0, react_1.useRef)(null);
153
+ var handleKeyDown = (0, react_1.useCallback)(function (event) {
154
+ if (event.key === 'Escape') {
155
+ event.preventDefault();
156
+ event.stopPropagation();
157
+ closeMenu();
158
+ }
159
+ if (['ArrowDown', 'ArrowUp'].includes(event.key)) {
160
+ event.preventDefault();
161
+ event.stopPropagation();
162
+ if (!contentRef.current) {
163
+ return;
164
+ }
165
+ var delta = event.key === 'ArrowUp' ? -1 : 1;
166
+ var selectedOption_1 = contentRef.current.querySelector('.' + styles_module_css_json_1.default['Dropdown__menu__option--is-selected']);
167
+ var nextOption = void 0;
168
+ if (!selectedOption_1) {
169
+ nextOption = contentRef.current.querySelector('.' + styles_module_css_json_1.default['Dropdown__menu__option']);
170
+ }
171
+ else {
172
+ var elements = Array.from(contentRef.current.querySelectorAll('.' + styles_module_css_json_1.default['Dropdown__menu__option']));
173
+ var index = elements.findIndex(function (el) { return el === selectedOption_1; });
174
+ var nextIndex = index + delta < 0
175
+ ? elements.length - 1
176
+ : (index + delta) % elements.length;
177
+ nextOption = elements[nextIndex];
178
+ selectedOption_1.classList.remove(styles_module_css_json_1.default['Dropdown__menu__option--is-selected']);
179
+ }
180
+ if (nextOption) {
181
+ nextOption.classList.add(styles_module_css_json_1.default['Dropdown__menu__option--is-selected']);
182
+ (0, scroll_into_view_if_needed_1.default)(nextOption, {
183
+ scrollMode: 'if-needed',
184
+ behavior: 'auto',
185
+ });
186
+ }
187
+ }
188
+ if (event.key === 'Enter') {
189
+ event.preventDefault();
190
+ event.stopPropagation();
191
+ if (!contentRef.current) {
192
+ return;
193
+ }
194
+ var selectedOption = contentRef.current.querySelector('.' + styles_module_css_json_1.default['Dropdown__menu__option--is-selected']);
195
+ if (selectedOption) {
196
+ var id_1 = selectedOption.dataset.optionId;
197
+ var option = options.find(function (x) { return x.id === id_1; });
198
+ if (option && option.handler) {
199
+ option.handler(event);
200
+ }
201
+ }
202
+ }
203
+ }, [options]);
204
+ var _f = (0, react_intersection_observer_1.useInView)({
205
+ threshold: 0,
206
+ rootMargin: '0px 0px 0px 0px',
207
+ triggerOnce: false,
208
+ }), observerRef = _f[0], inView = _f[1], entry = _f[2];
209
+ var parentRef = (0, react_1.createRef)();
210
+ var menuRef = (0, react_1.createRef)();
211
+ var reposition = (0, react_1.useCallback)(function () {
212
+ if (menuRef.current && parentRef.current) {
213
+ setPosition(menuRef.current, parentRef.current, alignment);
214
+ }
215
+ }, [menuRef, parentRef, alignment]);
216
+ (0, react_1.useEffect)(function () {
217
+ reposition();
218
+ }, [inView, entry === null || entry === void 0 ? void 0 : entry.intersectionRatio]);
219
+ (0, react_1.useEffect)(function () {
220
+ if (menuRef.current && parentRef.current) {
221
+ var resizeObserver_1 = new ResizeObserver(reposition);
222
+ resizeObserver_1.observe(menuRef.current);
223
+ resizeObserver_1.observe(parentRef.current);
224
+ return function () {
225
+ resizeObserver_1.disconnect();
226
+ };
227
+ }
228
+ return undefined;
229
+ }, [menuRef, reposition]);
230
+ (0, react_1.useEffect)(function () {
231
+ window.addEventListener('resize', reposition);
232
+ return function () { return window.removeEventListener('resize', reposition); };
233
+ }, [reposition]);
234
+ var Wrapper = matches ? MenuMobileContainer : MenuDesktopContainer;
235
+ return (react_1.default.createElement(react_1.default.Fragment, null,
236
+ react_1.default.createElement("div", { ref: (0, mergeRefs_1.mergeRefs)(observerRef, parentRef), className: styles_module_css_json_1.default['Dropdown__spacer'] }),
237
+ react_1.default.createElement(Wrapper, { ref: menuRef },
238
+ react_1.default.createElement("div", { className: (0, classnames_1.default)(styles_module_css_json_1.default['Dropdown__menu'], (_b = {},
239
+ _b[styles_module_css_json_1.default['Dropdown__menu--fullscreen']] = matches,
240
+ _b)) },
241
+ options.length > 5 && (react_1.default.createElement("div", { className: styles_module_css_json_1.default['Dropdown__menu__search'] },
242
+ react_1.default.createElement("input", { type: "text", value: searchTerm || '', onChange: handleChange, onKeyDown: handleKeyDown, placeholder: "Search...", autoFocus: true, className: styles_module_css_json_1.default['Dropdown__menu__search__input'] }))),
243
+ react_1.default.createElement(MenuContext_1.MenuContext.Provider, { value: { searchTerm: searchTerm, addOption: addOption, setClickHandlerForOption: setClickHandlerForOption } },
244
+ react_1.default.createElement("div", { className: styles_module_css_json_1.default['Dropdown__menu__inner'], ref: contentRef }, anyGroup ? (children) : (react_1.default.createElement("div", { className: styles_module_css_json_1.default['Dropdown__menu__group__content'] }, children))))),
245
+ matches ? (react_1.default.createElement("div", null,
246
+ react_1.default.createElement("div", { className: styles_module_css_json_1.default['Dropdown__menu__inner'] },
247
+ react_1.default.createElement(Option_1.Option, { closeMenuOnClick: true }, "Close")))) : null)));
248
+ };
249
+ exports.Menu = Menu;
250
+ //# sourceMappingURL=Menu.js.map