@fluentui/react-utilities 0.0.0-nightly-20220302-0405.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/CHANGELOG.json +1844 -0
  2. package/CHANGELOG.md +736 -0
  3. package/LICENSE +15 -0
  4. package/README.md +5 -0
  5. package/dist/react-utilities.d.ts +782 -0
  6. package/lib/compose/getSlots.d.ts +30 -0
  7. package/lib/compose/getSlots.js +63 -0
  8. package/lib/compose/getSlots.js.map +1 -0
  9. package/lib/compose/index.d.ts +3 -0
  10. package/lib/compose/index.js +4 -0
  11. package/lib/compose/index.js.map +1 -0
  12. package/lib/compose/resolveShorthand.d.ts +16 -0
  13. package/lib/compose/resolveShorthand.js +31 -0
  14. package/lib/compose/resolveShorthand.js.map +1 -0
  15. package/lib/compose/types.d.ts +155 -0
  16. package/lib/compose/types.js +6 -0
  17. package/lib/compose/types.js.map +1 -0
  18. package/lib/hooks/index.d.ts +16 -0
  19. package/lib/hooks/index.js +17 -0
  20. package/lib/hooks/index.js.map +1 -0
  21. package/lib/hooks/useBoolean.d.ts +17 -0
  22. package/lib/hooks/useBoolean.js +28 -0
  23. package/lib/hooks/useBoolean.js.map +1 -0
  24. package/lib/hooks/useConst.d.ts +12 -0
  25. package/lib/hooks/useConst.js +30 -0
  26. package/lib/hooks/useConst.js.map +1 -0
  27. package/lib/hooks/useControllableState.d.ts +31 -0
  28. package/lib/hooks/useControllableState.js +73 -0
  29. package/lib/hooks/useControllableState.js.map +1 -0
  30. package/lib/hooks/useEventCallback.d.ts +13 -0
  31. package/lib/hooks/useEventCallback.js +28 -0
  32. package/lib/hooks/useEventCallback.js.map +1 -0
  33. package/lib/hooks/useFirstMount.d.ts +11 -0
  34. package/lib/hooks/useFirstMount.js +23 -0
  35. package/lib/hooks/useFirstMount.js.map +1 -0
  36. package/lib/hooks/useForceUpdate.d.ts +4 -0
  37. package/lib/hooks/useForceUpdate.js +9 -0
  38. package/lib/hooks/useForceUpdate.js.map +1 -0
  39. package/lib/hooks/useId.d.ts +15 -0
  40. package/lib/hooks/useId.js +31 -0
  41. package/lib/hooks/useId.js.map +1 -0
  42. package/lib/hooks/useIsomorphicLayoutEffect.d.ts +11 -0
  43. package/lib/hooks/useIsomorphicLayoutEffect.js +15 -0
  44. package/lib/hooks/useIsomorphicLayoutEffect.js.map +1 -0
  45. package/lib/hooks/useMergedEventCallbacks.d.ts +18 -0
  46. package/lib/hooks/useMergedEventCallbacks.js +26 -0
  47. package/lib/hooks/useMergedEventCallbacks.js.map +1 -0
  48. package/lib/hooks/useMergedRefs.d.ts +13 -0
  49. package/lib/hooks/useMergedRefs.js +26 -0
  50. package/lib/hooks/useMergedRefs.js.map +1 -0
  51. package/lib/hooks/useMount.d.ts +6 -0
  52. package/lib/hooks/useMount.js +17 -0
  53. package/lib/hooks/useMount.js.map +1 -0
  54. package/lib/hooks/useOnClickOutside.d.ts +29 -0
  55. package/lib/hooks/useOnClickOutside.js +136 -0
  56. package/lib/hooks/useOnClickOutside.js.map +1 -0
  57. package/lib/hooks/useOnScrollOutside.d.ts +5 -0
  58. package/lib/hooks/useOnScrollOutside.js +36 -0
  59. package/lib/hooks/useOnScrollOutside.js.map +1 -0
  60. package/lib/hooks/usePrevious.d.ts +1 -0
  61. package/lib/hooks/usePrevious.js +9 -0
  62. package/lib/hooks/usePrevious.js.map +1 -0
  63. package/lib/hooks/useTimeout.d.ts +8 -0
  64. package/lib/hooks/useTimeout.js +29 -0
  65. package/lib/hooks/useTimeout.js.map +1 -0
  66. package/lib/hooks/useUnmount.d.ts +6 -0
  67. package/lib/hooks/useUnmount.js +17 -0
  68. package/lib/hooks/useUnmount.js.map +1 -0
  69. package/lib/index.d.ts +4 -0
  70. package/lib/index.js +5 -0
  71. package/lib/index.js.map +1 -0
  72. package/lib/ssr/SSRContext.d.ts +33 -0
  73. package/lib/ssr/SSRContext.js +65 -0
  74. package/lib/ssr/SSRContext.js.map +1 -0
  75. package/lib/ssr/canUseDOM.d.ts +4 -0
  76. package/lib/ssr/canUseDOM.js +8 -0
  77. package/lib/ssr/canUseDOM.js.map +1 -0
  78. package/lib/ssr/index.d.ts +2 -0
  79. package/lib/ssr/index.js +3 -0
  80. package/lib/ssr/index.js.map +1 -0
  81. package/lib/tsdoc-metadata.json +11 -0
  82. package/lib/utils/applyTriggerPropsToChildren.d.ts +5 -0
  83. package/lib/utils/applyTriggerPropsToChildren.js +36 -0
  84. package/lib/utils/applyTriggerPropsToChildren.js.map +1 -0
  85. package/lib/utils/clamp.d.ts +8 -0
  86. package/lib/utils/clamp.js +9 -0
  87. package/lib/utils/clamp.js.map +1 -0
  88. package/lib/utils/getNativeElementProps.d.ts +31 -0
  89. package/lib/utils/getNativeElementProps.js +61 -0
  90. package/lib/utils/getNativeElementProps.js.map +1 -0
  91. package/lib/utils/getRTLSafeKey.d.ts +4 -0
  92. package/lib/utils/getRTLSafeKey.js +21 -0
  93. package/lib/utils/getRTLSafeKey.js.map +1 -0
  94. package/lib/utils/getReactCallbackName.d.ts +25 -0
  95. package/lib/utils/getReactCallbackName.js +26 -0
  96. package/lib/utils/getReactCallbackName.js.map +1 -0
  97. package/lib/utils/getTriggerChild.d.ts +22 -0
  98. package/lib/utils/getTriggerChild.js +26 -0
  99. package/lib/utils/getTriggerChild.js.map +1 -0
  100. package/lib/utils/index.d.ts +9 -0
  101. package/lib/utils/index.js +10 -0
  102. package/lib/utils/index.js.map +1 -0
  103. package/lib/utils/isFluentTrigger.d.ts +22 -0
  104. package/lib/utils/isFluentTrigger.js +8 -0
  105. package/lib/utils/isFluentTrigger.js.map +1 -0
  106. package/lib/utils/omit.d.ts +14 -0
  107. package/lib/utils/omit.js +27 -0
  108. package/lib/utils/omit.js.map +1 -0
  109. package/lib/utils/properties.d.ts +154 -0
  110. package/lib/utils/properties.js +237 -0
  111. package/lib/utils/properties.js.map +1 -0
  112. package/lib/utils/shouldPreventDefaultOnKeyDown.d.ts +7 -0
  113. package/lib/utils/shouldPreventDefaultOnKeyDown.js +24 -0
  114. package/lib/utils/shouldPreventDefaultOnKeyDown.js.map +1 -0
  115. package/lib-commonjs/compose/getSlots.d.ts +30 -0
  116. package/lib-commonjs/compose/getSlots.js +74 -0
  117. package/lib-commonjs/compose/getSlots.js.map +1 -0
  118. package/lib-commonjs/compose/index.d.ts +3 -0
  119. package/lib-commonjs/compose/index.js +14 -0
  120. package/lib-commonjs/compose/index.js.map +1 -0
  121. package/lib-commonjs/compose/resolveShorthand.d.ts +16 -0
  122. package/lib-commonjs/compose/resolveShorthand.js +41 -0
  123. package/lib-commonjs/compose/resolveShorthand.js.map +1 -0
  124. package/lib-commonjs/compose/types.d.ts +155 -0
  125. package/lib-commonjs/compose/types.js +10 -0
  126. package/lib-commonjs/compose/types.js.map +1 -0
  127. package/lib-commonjs/hooks/index.d.ts +16 -0
  128. package/lib-commonjs/hooks/index.js +40 -0
  129. package/lib-commonjs/hooks/index.js.map +1 -0
  130. package/lib-commonjs/hooks/useBoolean.d.ts +17 -0
  131. package/lib-commonjs/hooks/useBoolean.js +39 -0
  132. package/lib-commonjs/hooks/useBoolean.js.map +1 -0
  133. package/lib-commonjs/hooks/useConst.d.ts +12 -0
  134. package/lib-commonjs/hooks/useConst.js +40 -0
  135. package/lib-commonjs/hooks/useConst.js.map +1 -0
  136. package/lib-commonjs/hooks/useControllableState.d.ts +31 -0
  137. package/lib-commonjs/hooks/useControllableState.js +83 -0
  138. package/lib-commonjs/hooks/useControllableState.js.map +1 -0
  139. package/lib-commonjs/hooks/useEventCallback.d.ts +13 -0
  140. package/lib-commonjs/hooks/useEventCallback.js +39 -0
  141. package/lib-commonjs/hooks/useEventCallback.js.map +1 -0
  142. package/lib-commonjs/hooks/useFirstMount.d.ts +11 -0
  143. package/lib-commonjs/hooks/useFirstMount.js +33 -0
  144. package/lib-commonjs/hooks/useFirstMount.js.map +1 -0
  145. package/lib-commonjs/hooks/useForceUpdate.d.ts +4 -0
  146. package/lib-commonjs/hooks/useForceUpdate.js +19 -0
  147. package/lib-commonjs/hooks/useForceUpdate.js.map +1 -0
  148. package/lib-commonjs/hooks/useId.d.ts +15 -0
  149. package/lib-commonjs/hooks/useId.js +44 -0
  150. package/lib-commonjs/hooks/useId.js.map +1 -0
  151. package/lib-commonjs/hooks/useIsomorphicLayoutEffect.d.ts +11 -0
  152. package/lib-commonjs/hooks/useIsomorphicLayoutEffect.js +24 -0
  153. package/lib-commonjs/hooks/useIsomorphicLayoutEffect.js.map +1 -0
  154. package/lib-commonjs/hooks/useMergedEventCallbacks.d.ts +18 -0
  155. package/lib-commonjs/hooks/useMergedEventCallbacks.js +36 -0
  156. package/lib-commonjs/hooks/useMergedEventCallbacks.js.map +1 -0
  157. package/lib-commonjs/hooks/useMergedRefs.d.ts +13 -0
  158. package/lib-commonjs/hooks/useMergedRefs.js +36 -0
  159. package/lib-commonjs/hooks/useMergedRefs.js.map +1 -0
  160. package/lib-commonjs/hooks/useMount.d.ts +6 -0
  161. package/lib-commonjs/hooks/useMount.js +27 -0
  162. package/lib-commonjs/hooks/useMount.js.map +1 -0
  163. package/lib-commonjs/hooks/useOnClickOutside.d.ts +29 -0
  164. package/lib-commonjs/hooks/useOnClickOutside.js +147 -0
  165. package/lib-commonjs/hooks/useOnClickOutside.js.map +1 -0
  166. package/lib-commonjs/hooks/useOnScrollOutside.d.ts +5 -0
  167. package/lib-commonjs/hooks/useOnScrollOutside.js +47 -0
  168. package/lib-commonjs/hooks/useOnScrollOutside.js.map +1 -0
  169. package/lib-commonjs/hooks/usePrevious.d.ts +1 -0
  170. package/lib-commonjs/hooks/usePrevious.js +19 -0
  171. package/lib-commonjs/hooks/usePrevious.js.map +1 -0
  172. package/lib-commonjs/hooks/useTimeout.d.ts +8 -0
  173. package/lib-commonjs/hooks/useTimeout.js +40 -0
  174. package/lib-commonjs/hooks/useTimeout.js.map +1 -0
  175. package/lib-commonjs/hooks/useUnmount.d.ts +6 -0
  176. package/lib-commonjs/hooks/useUnmount.js +27 -0
  177. package/lib-commonjs/hooks/useUnmount.js.map +1 -0
  178. package/lib-commonjs/index.d.ts +4 -0
  179. package/lib-commonjs/index.js +16 -0
  180. package/lib-commonjs/index.js.map +1 -0
  181. package/lib-commonjs/ssr/SSRContext.d.ts +33 -0
  182. package/lib-commonjs/ssr/SSRContext.js +80 -0
  183. package/lib-commonjs/ssr/SSRContext.js.map +1 -0
  184. package/lib-commonjs/ssr/canUseDOM.d.ts +4 -0
  185. package/lib-commonjs/ssr/canUseDOM.js +17 -0
  186. package/lib-commonjs/ssr/canUseDOM.js.map +1 -0
  187. package/lib-commonjs/ssr/index.d.ts +2 -0
  188. package/lib-commonjs/ssr/index.js +12 -0
  189. package/lib-commonjs/ssr/index.js.map +1 -0
  190. package/lib-commonjs/utils/applyTriggerPropsToChildren.d.ts +5 -0
  191. package/lib-commonjs/utils/applyTriggerPropsToChildren.js +47 -0
  192. package/lib-commonjs/utils/applyTriggerPropsToChildren.js.map +1 -0
  193. package/lib-commonjs/utils/clamp.d.ts +8 -0
  194. package/lib-commonjs/utils/clamp.js +18 -0
  195. package/lib-commonjs/utils/clamp.js.map +1 -0
  196. package/lib-commonjs/utils/getNativeElementProps.d.ts +31 -0
  197. package/lib-commonjs/utils/getNativeElementProps.js +73 -0
  198. package/lib-commonjs/utils/getNativeElementProps.js.map +1 -0
  199. package/lib-commonjs/utils/getRTLSafeKey.d.ts +4 -0
  200. package/lib-commonjs/utils/getRTLSafeKey.js +30 -0
  201. package/lib-commonjs/utils/getRTLSafeKey.js.map +1 -0
  202. package/lib-commonjs/utils/getReactCallbackName.d.ts +25 -0
  203. package/lib-commonjs/utils/getReactCallbackName.js +35 -0
  204. package/lib-commonjs/utils/getReactCallbackName.js.map +1 -0
  205. package/lib-commonjs/utils/getTriggerChild.d.ts +22 -0
  206. package/lib-commonjs/utils/getTriggerChild.js +37 -0
  207. package/lib-commonjs/utils/getTriggerChild.js.map +1 -0
  208. package/lib-commonjs/utils/index.d.ts +9 -0
  209. package/lib-commonjs/utils/index.js +26 -0
  210. package/lib-commonjs/utils/index.js.map +1 -0
  211. package/lib-commonjs/utils/isFluentTrigger.d.ts +22 -0
  212. package/lib-commonjs/utils/isFluentTrigger.js +17 -0
  213. package/lib-commonjs/utils/isFluentTrigger.js.map +1 -0
  214. package/lib-commonjs/utils/omit.d.ts +14 -0
  215. package/lib-commonjs/utils/omit.js +36 -0
  216. package/lib-commonjs/utils/omit.js.map +1 -0
  217. package/lib-commonjs/utils/properties.d.ts +154 -0
  218. package/lib-commonjs/utils/properties.js +246 -0
  219. package/lib-commonjs/utils/properties.js.map +1 -0
  220. package/lib-commonjs/utils/shouldPreventDefaultOnKeyDown.d.ts +7 -0
  221. package/lib-commonjs/utils/shouldPreventDefaultOnKeyDown.js +34 -0
  222. package/lib-commonjs/utils/shouldPreventDefaultOnKeyDown.js.map +1 -0
  223. package/package.json +50 -0
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getNativeProps = exports.divProperties = exports.imageProperties = exports.imgProperties = exports.iframeProperties = exports.formProperties = exports.fieldsetProperties = exports.colProperties = exports.colGroupProperties = exports.tdProperties = exports.thProperties = exports.trProperties = exports.tableProperties = exports.optionProperties = exports.selectProperties = exports.textAreaProperties = exports.inputProperties = exports.buttonProperties = exports.anchorProperties = exports.liProperties = exports.olProperties = exports.videoProperties = exports.audioProperties = exports.labelProperties = exports.htmlElementProperties = exports.baseElementProperties = exports.baseElementEvents = void 0;
7
+
8
+ const toObjectMap = (...items) => {
9
+ const result = {};
10
+
11
+ for (const item of items) {
12
+ const keys = Array.isArray(item) ? item : Object.keys(item);
13
+
14
+ for (const key of keys) {
15
+ result[key] = 1;
16
+ }
17
+ }
18
+
19
+ return result;
20
+ };
21
+ /**
22
+ * An array of events that are allowed on every html element type.
23
+ *
24
+ * @public
25
+ */
26
+
27
+
28
+ exports.baseElementEvents = /*#__PURE__*/toObjectMap(['onAuxClick', 'onCopy', 'onCut', 'onPaste', 'onCompositionEnd', 'onCompositionStart', 'onCompositionUpdate', 'onFocus', 'onFocusCapture', 'onBlur', 'onBlurCapture', 'onChange', 'onInput', 'onSubmit', 'onLoad', 'onError', 'onKeyDown', 'onKeyDownCapture', 'onKeyPress', 'onKeyUp', 'onAbort', 'onCanPlay', 'onCanPlayThrough', 'onDurationChange', 'onEmptied', 'onEncrypted', 'onEnded', 'onLoadedData', 'onLoadedMetadata', 'onLoadStart', 'onPause', 'onPlay', 'onPlaying', 'onProgress', 'onRateChange', 'onSeeked', 'onSeeking', 'onStalled', 'onSuspend', 'onTimeUpdate', 'onVolumeChange', 'onWaiting', 'onClick', 'onClickCapture', 'onContextMenu', 'onDoubleClick', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onMouseDown', 'onMouseDownCapture', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onMouseUpCapture', 'onSelect', 'onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart', 'onScroll', 'onWheel', 'onPointerCancel', 'onPointerDown', 'onPointerEnter', 'onPointerLeave', 'onPointerMove', 'onPointerOut', 'onPointerOver', 'onPointerUp', 'onGotPointerCapture', 'onLostPointerCapture']);
29
+ /**
30
+ * An array of element attributes which are allowed on every html element type.
31
+ *
32
+ * @public
33
+ */
34
+
35
+ exports.baseElementProperties = /*#__PURE__*/toObjectMap(['accessKey', 'children', 'className', 'contentEditable', 'dir', 'draggable', 'hidden', 'htmlFor', 'id', 'lang', 'ref', 'role', 'style', 'tabIndex', 'title', 'translate', 'spellCheck', 'name' // global
36
+ ]);
37
+ /**
38
+ * An array of HTML element properties and events.
39
+ *
40
+ * @public
41
+ */
42
+
43
+ exports.htmlElementProperties = /*#__PURE__*/toObjectMap(exports.baseElementProperties, exports.baseElementEvents);
44
+ /**
45
+ * An array of LABEL tag properties and events.
46
+ *
47
+ * @public
48
+ */
49
+
50
+ exports.labelProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['form' // button, fieldset, input, label, meter, object, output, select, textarea
51
+ ]);
52
+ /**
53
+ * An array of AUDIO tag properties and events.
54
+
55
+ * @public
56
+ */
57
+
58
+ exports.audioProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['height', 'loop', 'muted', 'preload', 'src', 'width' // canvas, embed, iframe, img, input, object, video
59
+ ]);
60
+ /**
61
+ * An array of VIDEO tag properties and events.
62
+ *
63
+ * @public
64
+ */
65
+
66
+ exports.videoProperties = /*#__PURE__*/toObjectMap(exports.audioProperties, ['poster' // video
67
+ ]);
68
+ /**
69
+ * An array of OL tag properties and events.
70
+ *
71
+ * @public
72
+ */
73
+
74
+ exports.olProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['start' // ol
75
+ ]);
76
+ /**
77
+ * An array of LI tag properties and events.
78
+ *
79
+ * @public
80
+ */
81
+
82
+ exports.liProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['value' // button, input, li, option, meter, progress, param
83
+ ]);
84
+ /**
85
+ * An array of A tag properties and events.
86
+ *
87
+ * @public
88
+ */
89
+
90
+ exports.anchorProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['download', 'href', 'hrefLang', 'media', 'rel', 'target', 'type' // a, button, input, link, menu, object, script, source, style
91
+ ]);
92
+ /**
93
+ * An array of BUTTON tag properties and events.
94
+ *
95
+ * @public
96
+ */
97
+
98
+ exports.buttonProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['autoFocus', 'disabled', 'form', 'formAction', 'formEncType', 'formMethod', 'formNoValidate', 'formTarget', 'type', 'value' // button, input, li, option, meter, progress, param,
99
+ ]);
100
+ /**
101
+ * An array of INPUT tag properties and events.
102
+ *
103
+ * @public
104
+ */
105
+
106
+ exports.inputProperties = /*#__PURE__*/toObjectMap(exports.buttonProperties, ['accept', 'alt', 'autoCapitalize', 'autoComplete', 'checked', 'dirname', 'form', 'height', 'inputMode', 'list', 'max', 'maxLength', 'min', 'multiple', 'pattern', 'placeholder', 'readOnly', 'required', 'src', 'step', 'size', 'type', 'value', 'width' // canvas, embed, iframe, img, input, object, video
107
+ ]);
108
+ /**
109
+ * An array of TEXTAREA tag properties and events.
110
+ *
111
+ * @public
112
+ */
113
+
114
+ exports.textAreaProperties = /*#__PURE__*/toObjectMap(exports.buttonProperties, ['autoCapitalize', 'cols', 'dirname', 'form', 'maxLength', 'placeholder', 'readOnly', 'required', 'rows', 'wrap' // textarea
115
+ ]);
116
+ /**
117
+ * An array of SELECT tag properties and events.
118
+ *
119
+ * @public
120
+ */
121
+
122
+ exports.selectProperties = /*#__PURE__*/toObjectMap(exports.buttonProperties, ['form', 'multiple', 'required' // input, select, textarea
123
+ ]);
124
+ exports.optionProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['selected', 'value' // button, input, li, option, meter, progress, param
125
+ ]);
126
+ /**
127
+ * An array of TABLE tag properties and events.
128
+ *
129
+ * @public
130
+ */
131
+
132
+ exports.tableProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['cellPadding', 'cellSpacing' // table
133
+ ]);
134
+ /**
135
+ * An array of TR tag properties and events.
136
+ *
137
+ * @public
138
+ */
139
+
140
+ exports.trProperties = exports.htmlElementProperties;
141
+ /**
142
+ * An array of TH tag properties and events.
143
+ *
144
+ * @public
145
+ */
146
+
147
+ exports.thProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['rowSpan', 'scope' // th
148
+ ]);
149
+ /**
150
+ * An array of TD tag properties and events.
151
+ *
152
+ * @public
153
+ */
154
+
155
+ exports.tdProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['colSpan', 'headers', 'rowSpan', 'scope' // th
156
+ ]);
157
+ exports.colGroupProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['span' // col, colgroup
158
+ ]);
159
+ exports.colProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['span' // col, colgroup
160
+ ]);
161
+ /**
162
+ * An array of FIELDSET tag properties and events.
163
+ *
164
+ * @public
165
+ */
166
+
167
+ exports.fieldsetProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['disabled', 'form' // button, fieldset, input, label, meter, object, output, select, textarea
168
+ ]);
169
+ /**
170
+ * An array of FORM tag properties and events.
171
+ *
172
+ * @public
173
+ */
174
+
175
+ exports.formProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['acceptCharset', 'action', 'encType', 'encType', 'method', 'noValidate', 'target' // form
176
+ ]);
177
+ /**
178
+ * An array of IFRAME tag properties and events.
179
+ *
180
+ * @public
181
+ */
182
+
183
+ exports.iframeProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['allow', 'allowFullScreen', 'allowPaymentRequest', 'allowTransparency', 'csp', 'height', 'importance', 'referrerPolicy', 'sandbox', 'src', 'srcDoc', 'width' // canvas, embed, iframe, img, input, object, video,
184
+ ]);
185
+ /**
186
+ * An array of IMAGE tag properties and events.
187
+ *
188
+ * @public
189
+ */
190
+
191
+ exports.imgProperties = /*#__PURE__*/toObjectMap(exports.htmlElementProperties, ['alt', 'crossOrigin', 'height', 'src', 'srcSet', 'useMap', 'width' // canvas, embed, iframe, img, input, object, video
192
+ ]);
193
+ /**
194
+ * @deprecated Use imgProperties for img elements.
195
+ */
196
+
197
+ exports.imageProperties = exports.imgProperties;
198
+ /**
199
+ * An array of DIV tag properties and events.
200
+ *
201
+ * @public
202
+ */
203
+
204
+ exports.divProperties = exports.htmlElementProperties;
205
+ /**
206
+ * Gets native supported props for an html element provided the allowance set. Use one of the property
207
+ * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given
208
+ * props set. Note that all data- and aria- prefixed attributes will be allowed.
209
+ * NOTE: getNativeProps should always be applied first when adding props to a react component. The
210
+ * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.
211
+ * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to
212
+ * the component after an onClick function is added, then the getNativeProps onClick will override it.
213
+ *
214
+ * @public
215
+ * @param props - The unfiltered input props
216
+ * @param allowedPropsNames - The array or record of allowed prop names.
217
+ * @returns The filtered props
218
+ */
219
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
220
+
221
+ function getNativeProps( // eslint-disable-next-line @typescript-eslint/no-explicit-any
222
+ props, allowedPropNames, excludedPropNames) {
223
+ // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for
224
+ // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.
225
+ // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then
226
+ // return native props.
227
+ // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797
228
+ const isArray = Array.isArray(allowedPropNames); // eslint-disable-next-line @typescript-eslint/no-explicit-any
229
+
230
+ const result = {};
231
+ const keys = Object.keys(props);
232
+
233
+ for (const key of keys) {
234
+ const isNativeProp = !isArray && allowedPropNames[key] || isArray && allowedPropNames.indexOf(key) >= 0 || key.indexOf('data-') === 0 || key.indexOf('aria-') === 0;
235
+
236
+ if (isNativeProp && (!excludedPropNames || (excludedPropNames === null || excludedPropNames === void 0 ? void 0 : excludedPropNames.indexOf(key)) === -1)) {
237
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
238
+ result[key] = props[key];
239
+ }
240
+ }
241
+
242
+ return result;
243
+ }
244
+
245
+ exports.getNativeProps = getNativeProps;
246
+ //# sourceMappingURL=properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["utils/properties.ts"],"names":[],"mappings":"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","sourcesContent":["const toObjectMap = (...items: (string[] | Record<string, number>)[]) => {\n const result: Record<string, number> = {};\n\n for (const item of items) {\n const keys = Array.isArray(item) ? item : Object.keys(item);\n\n for (const key of keys) {\n result[key] = 1;\n }\n }\n\n return result;\n};\n\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementEvents = toObjectMap([\n 'onAuxClick',\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onLoad',\n 'onError',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyUp',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onPointerCancel',\n 'onPointerDown',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerMove',\n 'onPointerOut',\n 'onPointerOver',\n 'onPointerUp',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n]);\n\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementProperties = toObjectMap([\n 'accessKey', // global\n 'children', // global\n 'className', // global\n 'contentEditable', // global\n 'dir', // global\n 'draggable', // global\n 'hidden', // global\n 'htmlFor', // global\n 'id', // global\n 'lang', // global\n 'ref', // global\n 'role', // global\n 'style', // global\n 'tabIndex', // global\n 'title', // global\n 'translate', // global\n 'spellCheck', // global\n 'name', // global\n]);\n\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */\nexport const htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents);\n\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */\nexport const labelProperties = toObjectMap(htmlElementProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */\nexport const audioProperties = toObjectMap(htmlElementProperties, [\n 'height', // canvas, embed, iframe, img, input, object, video\n 'loop', // audio, video\n 'muted', // audio, video\n 'preload', // audio, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */\nexport const videoProperties = toObjectMap(audioProperties, [\n 'poster', // video\n]);\n\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */\nexport const olProperties = toObjectMap(htmlElementProperties, [\n 'start', // ol\n]);\n\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */\nexport const liProperties = toObjectMap(htmlElementProperties, [\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of A tag properties and events.\n *\n * @public\n */\nexport const anchorProperties = toObjectMap(htmlElementProperties, [\n 'download', // a, area\n 'href', // a, area, base, link\n 'hrefLang', // a, area, link\n 'media', // a, area, link, source, style\n 'rel', // a, area, link\n 'target', // a, area, base, form\n 'type', // a, button, input, link, menu, object, script, source, style\n]);\n\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */\nexport const buttonProperties = toObjectMap(htmlElementProperties, [\n 'autoFocus', // button, input, select, textarea\n 'disabled', // button, fieldset, input, optgroup, option, select, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'formAction', // input, button\n 'formEncType', // input, button\n 'formMethod', // input, button\n 'formNoValidate', // input, button\n 'formTarget', // input, button\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param,\n]);\n\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */\nexport const inputProperties = toObjectMap(buttonProperties, [\n 'accept', // input\n 'alt', // area, img, input\n 'autoCapitalize', // input, textarea\n 'autoComplete', // form, input\n 'checked', // input\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'height', // canvas, embed, iframe, img, input, object, video\n 'inputMode', // input\n 'list', // input\n 'max', // input, meter\n 'maxLength', // input, textarea\n 'min', // input, meter\n 'multiple', // input, select\n 'pattern', // input\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'step', // input\n 'size', // input\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */\nexport const textAreaProperties = toObjectMap(buttonProperties, [\n 'autoCapitalize', // input, textarea\n 'cols', // textarea\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'maxLength', // input, textarea\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'rows', // textarea\n 'wrap', // textarea\n]);\n\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */\nexport const selectProperties = toObjectMap(buttonProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'multiple', // input, select\n 'required', // input, select, textarea\n]);\n\nexport const optionProperties = toObjectMap(htmlElementProperties, [\n 'selected', // option\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */\nexport const tableProperties = toObjectMap(htmlElementProperties, [\n 'cellPadding', // table\n 'cellSpacing', // table\n]);\n\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */\nexport const trProperties = htmlElementProperties;\n\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */\nexport const thProperties = toObjectMap(htmlElementProperties, [\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */\nexport const tdProperties = toObjectMap(htmlElementProperties, [\n 'colSpan', // td\n 'headers', // td\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\nexport const colGroupProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\nexport const colProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\n/**\n * An array of FIELDSET tag properties and events.\n *\n * @public\n */\nexport const fieldsetProperties = toObjectMap(htmlElementProperties, [\n 'disabled', // button, fieldset, input, optgroup, option, select, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */\nexport const formProperties = toObjectMap(htmlElementProperties, [\n 'acceptCharset', // form\n 'action', // form\n 'encType', // form\n 'encType', // form\n 'method', // form\n 'noValidate', // form\n 'target', // form\n]);\n\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */\nexport const iframeProperties = toObjectMap(htmlElementProperties, [\n 'allow', // iframe\n 'allowFullScreen', // iframe\n 'allowPaymentRequest', // iframe\n 'allowTransparency', // iframe\n 'csp', // iframe\n 'height', // canvas, embed, iframe, img, input, object, video\n 'importance', // iframe\n 'referrerPolicy', // iframe\n 'sandbox', // iframe\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcDoc', // iframe\n 'width', // canvas, embed, iframe, img, input, object, video,\n]);\n\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */\nexport const imgProperties = toObjectMap(htmlElementProperties, [\n 'alt', // area, img, input\n 'crossOrigin', // img\n 'height', // canvas, embed, iframe, img, input, object, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcSet', // img, source\n 'useMap', // img, object,\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * @deprecated Use imgProperties for img elements.\n */\nexport const imageProperties = imgProperties;\n\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */\nexport const divProperties = htmlElementProperties;\n\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropsNames - The array or record of allowed prop names.\n * @returns The filtered props\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps<T extends Record<string, any>>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: Record<string, any>,\n allowedPropNames: string[] | Record<string, number>,\n excludedPropNames?: string[],\n): T {\n // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n // return native props.\n // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n\n const isArray = Array.isArray(allowedPropNames);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: Record<string, any> = {};\n const keys = Object.keys(props);\n\n for (const key of keys) {\n const isNativeProp =\n (!isArray && (allowedPropNames as Record<string, number>)[key]) ||\n (isArray && (allowedPropNames as string[]).indexOf(key) >= 0) ||\n key.indexOf('data-') === 0 ||\n key.indexOf('aria-') === 0;\n\n if (isNativeProp && (!excludedPropNames || excludedPropNames?.indexOf(key) === -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result[key] = props![key] as any;\n }\n }\n\n return result as T;\n}\n"],"sourceRoot":"../src/"}
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ /**
3
+ * Checks if the keyboard event should preventDefault() for Enter and Spacebar keys
4
+ *
5
+ * Useful for situations where a keydown needs to be transformed to a click event
6
+ */
7
+ export declare function shouldPreventDefaultOnKeyDown(e: KeyboardEvent | React.KeyboardEvent): boolean;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.shouldPreventDefaultOnKeyDown = void 0;
7
+
8
+ const keyboard_keys_1 = /*#__PURE__*/require("@fluentui/keyboard-keys");
9
+ /**
10
+ * Checks if the keyboard event should preventDefault() for Enter and Spacebar keys
11
+ *
12
+ * Useful for situations where a keydown needs to be transformed to a click event
13
+ */
14
+
15
+
16
+ function shouldPreventDefaultOnKeyDown(e) {
17
+ if (e.defaultPrevented) {
18
+ return false;
19
+ }
20
+
21
+ const key = e.key;
22
+ const target = e.target;
23
+ const matchesByKey = key === keyboard_keys_1.Space || key === keyboard_keys_1.Enter;
24
+
25
+ if ((target === null || target === void 0 ? void 0 : target.tagName) === 'A') {
26
+ return key === keyboard_keys_1.Space;
27
+ }
28
+
29
+ const ignoredByTag = (target === null || target === void 0 ? void 0 : target.tagName) === 'INPUT' || (target === null || target === void 0 ? void 0 : target.tagName) === 'TEXTAREA' || (target === null || target === void 0 ? void 0 : target.isContentEditable) === true;
30
+ return matchesByKey && !ignoredByTag;
31
+ }
32
+
33
+ exports.shouldPreventDefaultOnKeyDown = shouldPreventDefaultOnKeyDown;
34
+ //# sourceMappingURL=shouldPreventDefaultOnKeyDown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["utils/shouldPreventDefaultOnKeyDown.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,eAAA,gBAAA,OAAA,CAAA,yBAAA,CAAA;AAGA;;;;AAIG;;;AACH,SAAgB,6BAAhB,CAA8C,CAA9C,EAAoF;AAClF,MAAI,CAAC,CAAC,gBAAN,EAAwB;AACtB,WAAO,KAAP;AACD;;AAED,QAAM,GAAG,GAAG,CAAC,CAAC,GAAd;AACA,QAAM,MAAM,GAA4B,CAAC,CAAC,MAA1C;AAEA,QAAM,YAAY,GAAG,GAAG,KAAK,eAAA,CAAA,KAAR,IAAiB,GAAG,KAAK,eAAA,CAAA,KAA9C;;AAEA,MAAI,CAAA,MAAM,KAAA,IAAN,IAAA,MAAM,KAAA,KAAA,CAAN,GAAM,KAAA,CAAN,GAAA,MAAM,CAAE,OAAR,MAAoB,GAAxB,EAA6B;AAC3B,WAAO,GAAG,KAAK,eAAA,CAAA,KAAf;AACD;;AAED,QAAM,YAAY,GAChB,CAAA,MAAM,KAAA,IAAN,IAAA,MAAM,KAAA,KAAA,CAAN,GAAM,KAAA,CAAN,GAAA,MAAM,CAAE,OAAR,MAAoB,OAApB,IAA+B,CAAA,MAAM,KAAA,IAAN,IAAA,MAAM,KAAA,KAAA,CAAN,GAAM,KAAA,CAAN,GAAA,MAAM,CAAE,OAAR,MAAoB,UAAnD,IAAiE,CAAA,MAAM,KAAA,IAAN,IAAA,MAAM,KAAA,KAAA,CAAN,GAAM,KAAA,CAAN,GAAA,MAAM,CAAE,iBAAR,MAA8B,IADjG;AAGA,SAAO,YAAY,IAAI,CAAC,YAAxB;AACD;;AAlBD,OAAA,CAAA,6BAAA,GAAA,6BAAA","sourcesContent":["import { Space, Enter } from '@fluentui/keyboard-keys';\nimport * as React from 'react';\n\n/**\n * Checks if the keyboard event should preventDefault() for Enter and Spacebar keys\n *\n * Useful for situations where a keydown needs to be transformed to a click event\n */\nexport function shouldPreventDefaultOnKeyDown(e: KeyboardEvent | React.KeyboardEvent) {\n if (e.defaultPrevented) {\n return false;\n }\n\n const key = e.key;\n const target: HTMLElement | undefined = e.target as HTMLElement;\n\n const matchesByKey = key === Space || key === Enter;\n\n if (target?.tagName === 'A') {\n return key === Space;\n }\n\n const ignoredByTag =\n target?.tagName === 'INPUT' || target?.tagName === 'TEXTAREA' || target?.isContentEditable === true;\n\n return matchesByKey && !ignoredByTag;\n}\n"],"sourceRoot":"../src/"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@fluentui/react-utilities",
3
+ "version": "0.0.0-nightly-20220302-0405.1",
4
+ "description": "A set of general React-specific utilities.",
5
+ "main": "lib-commonjs/index.js",
6
+ "module": "lib/index.js",
7
+ "typings": "lib/index.d.ts",
8
+ "sideEffects": false,
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "https://github.com/microsoft/fluentui"
12
+ },
13
+ "license": "MIT",
14
+ "scripts": {
15
+ "build": "just-scripts build",
16
+ "bundle-size": "bundle-size measure",
17
+ "clean": "just-scripts clean",
18
+ "code-style": "just-scripts code-style",
19
+ "just": "just-scripts",
20
+ "lint": "just-scripts lint",
21
+ "test": "jest --passWithNoTests",
22
+ "docs": "api-extractor run --config=config/api-extractor.local.json --local",
23
+ "build:local": "tsc -p ./tsconfig.lib.json --module esnext --emitDeclarationOnly && node ../../scripts/typescript/normalize-import --output ./dist/packages/react-utilities/src && yarn docs",
24
+ "start": "yarn storybook",
25
+ "type-check": "tsc -b tsconfig.json"
26
+ },
27
+ "devDependencies": {
28
+ "@fluentui/eslint-plugin": "*",
29
+ "@fluentui/scripts": "^1.0.0",
30
+ "@types/react": "16.9.42",
31
+ "@types/react-test-renderer": "^16.0.0",
32
+ "react": "16.8.6",
33
+ "react-test-renderer": "^16.3.0"
34
+ },
35
+ "dependencies": {
36
+ "@fluentui/keyboard-keys": "0.0.0-nightly-20220302-0405.1",
37
+ "tslib": "^2.1.0"
38
+ },
39
+ "peerDependencies": {
40
+ "@types/react": ">=16.8.0 <18.0.0",
41
+ "react": ">=16.8.0 <18.0.0"
42
+ },
43
+ "beachball": {
44
+ "disallowedChangeTypes": [
45
+ "major",
46
+ "minor",
47
+ "patch"
48
+ ]
49
+ }
50
+ }