@cambly/syntax-core 2.10.0 → 3.0.0
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.
- package/dist/index.css +21 -38
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +10 -6
- package/dist/index.js +104 -31
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +102 -29
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -729,10 +729,94 @@ var MiniActionCard_default = MiniActionCard;
|
|
|
729
729
|
|
|
730
730
|
// src/RadioButton/RadioButton.tsx
|
|
731
731
|
var import_classnames8 = __toESM(require_classnames());
|
|
732
|
-
import { useState as
|
|
732
|
+
import { useState as useState3 } from "react";
|
|
733
733
|
|
|
734
734
|
// css-module:./RadioButton.module.css#css-module
|
|
735
|
-
var RadioButton_module_default = { "
|
|
735
|
+
var RadioButton_module_default = { "radioBaseContainer": "_radioBaseContainer_x6och_1", "smBase": "_smBase_x6och_8", "mdBase": "_mdBase_x6och_13", "radioStyleOverride": "_radioStyleOverride_x6och_18", "smOverride": "_smOverride_x6och_23", "mdOverride": "_mdOverride_x6och_28", "background": "_background_x6och_33", "sm": "_sm_x6och_8", "md": "_md_x6och_13", "neutralBorder": "_neutralBorder_x6och_50", "smCheckedBorder": "_smCheckedBorder_x6och_54", "mdCheckedBorder": "_mdCheckedBorder_x6och_58", "errorBorderColor": "_errorBorderColor_x6och_62", "borderColor": "_borderColor_x6och_66", "focusedRadioButton": "_focusedRadioButton_x6och_70" };
|
|
736
|
+
|
|
737
|
+
// src/useFocusVisible.tsx
|
|
738
|
+
import { useState as useState2, useEffect } from "react";
|
|
739
|
+
var hasSetupGlobalListeners = false;
|
|
740
|
+
var currentModality = null;
|
|
741
|
+
var changeHandlers = /* @__PURE__ */ new Set();
|
|
742
|
+
var hasEventBeforeFocus = false;
|
|
743
|
+
var isMac = typeof window !== "undefined" && window.navigator != null ? /^Mac/.test(window.navigator.platform) : false;
|
|
744
|
+
function isValidKey(e) {
|
|
745
|
+
return !(e.metaKey || !isMac && e.altKey || e.ctrlKey);
|
|
746
|
+
}
|
|
747
|
+
function triggerChangeHandlers(modality, e) {
|
|
748
|
+
changeHandlers.forEach((handler) => {
|
|
749
|
+
handler(modality, e);
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
function handleKeyboardEvent(e) {
|
|
753
|
+
hasEventBeforeFocus = true;
|
|
754
|
+
if (isValidKey(e)) {
|
|
755
|
+
currentModality = "keyboard";
|
|
756
|
+
triggerChangeHandlers("keyboard", e);
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
function handlePointerEvent(e) {
|
|
760
|
+
currentModality = "pointer";
|
|
761
|
+
if (e.type === "mousedown" || e.type === "pointerdown") {
|
|
762
|
+
hasEventBeforeFocus = true;
|
|
763
|
+
triggerChangeHandlers("pointer", e);
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
function handleFocusEvent(e) {
|
|
767
|
+
if (e.target === window || e.target === document) {
|
|
768
|
+
return;
|
|
769
|
+
}
|
|
770
|
+
if (!hasEventBeforeFocus) {
|
|
771
|
+
currentModality = "keyboard";
|
|
772
|
+
triggerChangeHandlers("keyboard", e);
|
|
773
|
+
}
|
|
774
|
+
hasEventBeforeFocus = false;
|
|
775
|
+
}
|
|
776
|
+
function handleWindowBlur() {
|
|
777
|
+
hasEventBeforeFocus = false;
|
|
778
|
+
}
|
|
779
|
+
function isFocusVisible() {
|
|
780
|
+
return currentModality !== "pointer";
|
|
781
|
+
}
|
|
782
|
+
function setupGlobalFocusEvents() {
|
|
783
|
+
if (typeof window === "undefined" || hasSetupGlobalListeners) {
|
|
784
|
+
return;
|
|
785
|
+
}
|
|
786
|
+
const { focus } = HTMLElement.prototype;
|
|
787
|
+
HTMLElement.prototype.focus = function focusElement(...args) {
|
|
788
|
+
hasEventBeforeFocus = true;
|
|
789
|
+
focus.apply(this, args);
|
|
790
|
+
};
|
|
791
|
+
document.addEventListener("keydown", handleKeyboardEvent, true);
|
|
792
|
+
document.addEventListener("keyup", handleKeyboardEvent, true);
|
|
793
|
+
window.addEventListener("focus", handleFocusEvent, true);
|
|
794
|
+
window.addEventListener("blur", handleWindowBlur, false);
|
|
795
|
+
if (typeof PointerEvent !== "undefined") {
|
|
796
|
+
document.addEventListener("pointerdown", handlePointerEvent, true);
|
|
797
|
+
document.addEventListener("pointermove", handlePointerEvent, true);
|
|
798
|
+
document.addEventListener("pointerup", handlePointerEvent, true);
|
|
799
|
+
} else {
|
|
800
|
+
document.addEventListener("mousedown", handlePointerEvent, true);
|
|
801
|
+
document.addEventListener("mousemove", handlePointerEvent, true);
|
|
802
|
+
document.addEventListener("mouseup", handlePointerEvent, true);
|
|
803
|
+
}
|
|
804
|
+
hasSetupGlobalListeners = true;
|
|
805
|
+
}
|
|
806
|
+
function useFocusVisible() {
|
|
807
|
+
setupGlobalFocusEvents();
|
|
808
|
+
const [isFocusVisibleState, setFocusVisible] = useState2(isFocusVisible());
|
|
809
|
+
useEffect(() => {
|
|
810
|
+
const handler = () => {
|
|
811
|
+
setFocusVisible(isFocusVisible());
|
|
812
|
+
};
|
|
813
|
+
changeHandlers.add(handler);
|
|
814
|
+
return () => {
|
|
815
|
+
changeHandlers.delete(handler);
|
|
816
|
+
};
|
|
817
|
+
}, []);
|
|
818
|
+
return { isFocusVisible: isFocusVisibleState };
|
|
819
|
+
}
|
|
736
820
|
|
|
737
821
|
// src/RadioButton/RadioButton.tsx
|
|
738
822
|
import { jsx as jsx12, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
@@ -741,15 +825,22 @@ var RadioButton = ({
|
|
|
741
825
|
disabled = false,
|
|
742
826
|
error = false,
|
|
743
827
|
label,
|
|
828
|
+
name,
|
|
744
829
|
onChange,
|
|
745
830
|
size = "md",
|
|
746
|
-
value
|
|
831
|
+
value
|
|
747
832
|
}) => {
|
|
748
|
-
const [isFocused, setIsFocused] =
|
|
833
|
+
const [isFocused, setIsFocused] = useState3(false);
|
|
834
|
+
const { isFocusVisible: isFocusVisible2 } = useFocusVisible();
|
|
835
|
+
const sharedStyles = (0, import_classnames8.default)(RadioButton_module_default.background, RadioButton_module_default[size], {
|
|
836
|
+
[RadioButton_module_default.errorBorderColor]: error,
|
|
837
|
+
[RadioButton_module_default.borderColor]: !error,
|
|
838
|
+
[RadioButton_module_default.focusedRadioButton]: isFocused && isFocusVisible2
|
|
839
|
+
});
|
|
749
840
|
return /* @__PURE__ */ jsxs3(
|
|
750
841
|
"label",
|
|
751
842
|
{
|
|
752
|
-
className: (0, import_classnames8.default)(RadioButton_module_default.
|
|
843
|
+
className: (0, import_classnames8.default)(RadioButton_module_default.radioBaseContainer, {
|
|
753
844
|
[RadioButton_module_default.smBase]: size === "sm",
|
|
754
845
|
[RadioButton_module_default.mdBase]: size === "md"
|
|
755
846
|
}),
|
|
@@ -758,6 +849,7 @@ var RadioButton = ({
|
|
|
758
849
|
"input",
|
|
759
850
|
{
|
|
760
851
|
type: "radio",
|
|
852
|
+
name,
|
|
761
853
|
className: (0, import_classnames8.default)(RadioButton_module_default.radioStyleOverride, {
|
|
762
854
|
[RadioButton_module_default.smOverride]: size === "sm",
|
|
763
855
|
[RadioButton_module_default.mdOverride]: size === "md"
|
|
@@ -765,7 +857,7 @@ var RadioButton = ({
|
|
|
765
857
|
checked,
|
|
766
858
|
onChange,
|
|
767
859
|
disabled,
|
|
768
|
-
value
|
|
860
|
+
value,
|
|
769
861
|
onFocus: () => {
|
|
770
862
|
setIsFocused(true);
|
|
771
863
|
},
|
|
@@ -777,31 +869,12 @@ var RadioButton = ({
|
|
|
777
869
|
checked ? /* @__PURE__ */ jsx12(
|
|
778
870
|
"div",
|
|
779
871
|
{
|
|
780
|
-
className: (0, import_classnames8.default)(
|
|
781
|
-
[RadioButton_module_default.
|
|
782
|
-
[RadioButton_module_default.
|
|
783
|
-
[RadioButton_module_default.focusedRadioButton]: isFocused
|
|
784
|
-
}),
|
|
785
|
-
children: /* @__PURE__ */ jsx12(
|
|
786
|
-
"div",
|
|
787
|
-
{
|
|
788
|
-
className: (0, import_classnames8.default)(RadioButton_module_default.circle, {
|
|
789
|
-
[RadioButton_module_default.smInner]: size === "sm",
|
|
790
|
-
[RadioButton_module_default.mdInner]: size === "md"
|
|
791
|
-
})
|
|
792
|
-
}
|
|
793
|
-
)
|
|
794
|
-
}
|
|
795
|
-
) : /* @__PURE__ */ jsx12(
|
|
796
|
-
"div",
|
|
797
|
-
{
|
|
798
|
-
className: (0, import_classnames8.default)(RadioButton_module_default.background, RadioButton_module_default[size], {
|
|
799
|
-
[RadioButton_module_default.errorBorderColor]: error,
|
|
800
|
-
[RadioButton_module_default.borderColor]: !error,
|
|
801
|
-
[RadioButton_module_default.focusedRadioButton]: isFocused
|
|
872
|
+
className: (0, import_classnames8.default)(sharedStyles, {
|
|
873
|
+
[RadioButton_module_default.mdCheckedBorder]: size === "md",
|
|
874
|
+
[RadioButton_module_default.smCheckedBorder]: size === "sm"
|
|
802
875
|
})
|
|
803
876
|
}
|
|
804
|
-
),
|
|
877
|
+
) : /* @__PURE__ */ jsx12("div", { className: (0, import_classnames8.default)(sharedStyles, RadioButton_module_default.neutralBorder) }),
|
|
805
878
|
/* @__PURE__ */ jsx12(
|
|
806
879
|
Typography_default,
|
|
807
880
|
{
|