@webstudio-is/sdk-components-react 0.145.0 → 0.163.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/lib/components.js +476 -18
- package/lib/metas.js +977 -371
- package/lib/props.js +1271 -1099
- package/lib/types/__generated__/local-date.props.d.ts +2 -0
- package/lib/types/__generated__/time.props.d.ts +2 -0
- package/lib/types/__generated__/xml-node.props.d.ts +2 -0
- package/lib/types/code-text.d.ts +3 -1
- package/lib/types/components.d.ts +2 -0
- package/lib/types/content-embed.ws.d.ts +2 -0
- package/lib/types/html-embed-patchers.d.ts +2 -0
- package/lib/types/html-embed.d.ts +1 -0
- package/lib/types/metas.d.ts +3 -0
- package/lib/types/props.d.ts +2 -0
- package/lib/types/time.d.ts +16 -0
- package/lib/types/time.ws.d.ts +3 -0
- package/lib/types/xml-node.d.ts +12 -0
- package/lib/types/xml-node.ws.d.ts +3 -0
- package/package.json +11 -14
package/lib/components.js
CHANGED
|
@@ -32,6 +32,57 @@ import {
|
|
|
32
32
|
} from "react";
|
|
33
33
|
import { mergeRefs } from "@react-aria/utils";
|
|
34
34
|
import { ReactSdkContext } from "@webstudio-is/react-sdk";
|
|
35
|
+
|
|
36
|
+
// src/html-embed-patchers.ts
|
|
37
|
+
var isDOMContentLoaded = () => {
|
|
38
|
+
return document.readyState === "complete" || document.readyState === "interactive";
|
|
39
|
+
};
|
|
40
|
+
var eventListenerTasks = [];
|
|
41
|
+
var domContentLoadedPatched = false;
|
|
42
|
+
var patchDomEvents = () => {
|
|
43
|
+
if (isDOMContentLoaded() === false) {
|
|
44
|
+
console.error("DOMContentLoaded event has not been fired yet");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (domContentLoadedPatched) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
domContentLoadedPatched = true;
|
|
51
|
+
console.info("Patching DOMContentLoaded event listener");
|
|
52
|
+
const originalAddEventListener = document.addEventListener;
|
|
53
|
+
const originalWindowAddEventListener = window.addEventListener;
|
|
54
|
+
const domContentLoadedEvent = new Event("DOMContentLoaded");
|
|
55
|
+
const windowLoadEvent = new Event("load");
|
|
56
|
+
window.addEventListener = (type, listener, options) => {
|
|
57
|
+
if (type === "DOMContentLoaded") {
|
|
58
|
+
eventListenerTasks.push(
|
|
59
|
+
() => listener.call(window, domContentLoadedEvent)
|
|
60
|
+
);
|
|
61
|
+
} else if (type === "load") {
|
|
62
|
+
eventListenerTasks.push(() => listener.call(window, windowLoadEvent));
|
|
63
|
+
originalWindowAddEventListener.call(window, type, listener, options);
|
|
64
|
+
} else {
|
|
65
|
+
originalWindowAddEventListener.call(window, type, listener, options);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
document.addEventListener = (type, listener, options) => {
|
|
69
|
+
if (type === "DOMContentLoaded") {
|
|
70
|
+
eventListenerTasks.push(
|
|
71
|
+
() => listener.call(document, domContentLoadedEvent)
|
|
72
|
+
);
|
|
73
|
+
} else {
|
|
74
|
+
originalAddEventListener.call(document, type, listener, options);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
var executeDomEvents = () => {
|
|
79
|
+
for (const task of eventListenerTasks) {
|
|
80
|
+
task();
|
|
81
|
+
}
|
|
82
|
+
eventListenerTasks.length = 0;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// src/html-embed.tsx
|
|
35
86
|
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
36
87
|
var __testing__ = {
|
|
37
88
|
scriptTestIdPrefix: "client-"
|
|
@@ -48,7 +99,7 @@ var insertScript = (sourceScript) => {
|
|
|
48
99
|
}
|
|
49
100
|
if (hasSrc) {
|
|
50
101
|
script.addEventListener("load", () => {
|
|
51
|
-
resolve(
|
|
102
|
+
resolve();
|
|
52
103
|
});
|
|
53
104
|
script.addEventListener("error", reject);
|
|
54
105
|
} else {
|
|
@@ -56,11 +107,30 @@ var insertScript = (sourceScript) => {
|
|
|
56
107
|
}
|
|
57
108
|
sourceScript.replaceWith(script);
|
|
58
109
|
if (hasSrc === false) {
|
|
59
|
-
resolve(
|
|
110
|
+
resolve();
|
|
60
111
|
}
|
|
61
112
|
});
|
|
62
113
|
};
|
|
63
|
-
var
|
|
114
|
+
var syncTasksQueue = [];
|
|
115
|
+
var processing = false;
|
|
116
|
+
var processSyncTasks = async (syncTasks) => {
|
|
117
|
+
syncTasksQueue.push(...syncTasks);
|
|
118
|
+
await Promise.resolve();
|
|
119
|
+
if (processing) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
patchDomEvents();
|
|
123
|
+
console.info("Start processing sync tasks");
|
|
124
|
+
processing = true;
|
|
125
|
+
while (syncTasksQueue.length > 0) {
|
|
126
|
+
const task = syncTasksQueue.shift();
|
|
127
|
+
await task();
|
|
128
|
+
}
|
|
129
|
+
executeDomEvents();
|
|
130
|
+
processing = false;
|
|
131
|
+
console.info("Stop processing sync tasks");
|
|
132
|
+
};
|
|
133
|
+
var execute = (container) => {
|
|
64
134
|
const scripts = container.querySelectorAll("script");
|
|
65
135
|
const syncTasks = [];
|
|
66
136
|
const asyncTasks = [];
|
|
@@ -73,13 +143,11 @@ var execute = async (container) => {
|
|
|
73
143
|
for (const task of asyncTasks) {
|
|
74
144
|
task();
|
|
75
145
|
}
|
|
76
|
-
|
|
77
|
-
await task();
|
|
78
|
-
}
|
|
146
|
+
processSyncTasks(syncTasks);
|
|
79
147
|
};
|
|
80
148
|
var Placeholder = (props) => {
|
|
81
149
|
const { code, innerRef, ...rest } = props;
|
|
82
|
-
return /* @__PURE__ */ jsx3("div", { ref: innerRef, ...rest, style: { padding:
|
|
150
|
+
return /* @__PURE__ */ jsx3("div", { ref: innerRef, ...rest, style: { padding: 20 }, children: 'Open the "Settings" panel to insert HTML code.' });
|
|
83
151
|
};
|
|
84
152
|
var useIsServer = () => {
|
|
85
153
|
const isServer = useSyncExternalStore(
|
|
@@ -133,7 +201,7 @@ var ServerEmbed = (props) => {
|
|
|
133
201
|
var ClientEmbedWithNonExecutableScripts = ServerEmbed;
|
|
134
202
|
var HtmlEmbed = forwardRef3(
|
|
135
203
|
(props, ref) => {
|
|
136
|
-
const { code, executeScriptOnCanvas, clientOnly, ...rest } = props;
|
|
204
|
+
const { code, executeScriptOnCanvas, clientOnly, children, ...rest } = props;
|
|
137
205
|
const { renderer } = useContext(ReactSdkContext);
|
|
138
206
|
const isServer = useIsServer();
|
|
139
207
|
const [ssrRendered] = useState(isServer);
|
|
@@ -317,33 +385,34 @@ var imagePlaceholderSvg = `data:image/svg+xml;base64,${btoa(`<svg
|
|
|
317
385
|
</svg>`)}`;
|
|
318
386
|
var Image = forwardRef19(
|
|
319
387
|
({ loading = "lazy", ...props }, ref) => {
|
|
388
|
+
const src = String(props.src ?? "");
|
|
320
389
|
const { imageLoader, renderer, assetBaseUrl } = useContext2(ReactSdkContext2);
|
|
321
390
|
if (renderer === "canvas") {
|
|
322
391
|
loading = "eager";
|
|
323
392
|
}
|
|
324
|
-
if (
|
|
393
|
+
if (src.startsWith(assetBaseUrl) === false) {
|
|
325
394
|
return /* @__PURE__ */ jsx18(
|
|
326
395
|
"img",
|
|
327
396
|
{
|
|
328
397
|
loading,
|
|
329
398
|
...props,
|
|
330
|
-
src:
|
|
399
|
+
src: src || imagePlaceholderSvg,
|
|
331
400
|
ref
|
|
332
401
|
},
|
|
333
|
-
|
|
402
|
+
src
|
|
334
403
|
);
|
|
335
404
|
}
|
|
336
|
-
const
|
|
405
|
+
const assetName = src.slice(assetBaseUrl.length);
|
|
337
406
|
return /* @__PURE__ */ jsx18(
|
|
338
407
|
WebstudioImage,
|
|
339
408
|
{
|
|
340
409
|
loading,
|
|
341
410
|
...props,
|
|
342
411
|
loader: imageLoader,
|
|
343
|
-
src,
|
|
412
|
+
src: assetName,
|
|
344
413
|
ref
|
|
345
414
|
},
|
|
346
|
-
|
|
415
|
+
assetName
|
|
347
416
|
);
|
|
348
417
|
}
|
|
349
418
|
);
|
|
@@ -396,10 +465,21 @@ var Separator = forwardRef23(
|
|
|
396
465
|
Separator.displayName = "Separator";
|
|
397
466
|
|
|
398
467
|
// src/code-text.tsx
|
|
399
|
-
import {
|
|
468
|
+
import {
|
|
469
|
+
forwardRef as forwardRef24
|
|
470
|
+
} from "react";
|
|
400
471
|
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
401
|
-
var
|
|
402
|
-
|
|
472
|
+
var Placeholder2 = ({
|
|
473
|
+
innerRef,
|
|
474
|
+
...rest
|
|
475
|
+
}) => {
|
|
476
|
+
return /* @__PURE__ */ jsx21("code", { ...rest, style: { padding: 20 }, ref: innerRef, children: `Open the "Settings" panel to edit the code.` });
|
|
477
|
+
};
|
|
478
|
+
var CodeText = forwardRef24(({ code, children, ...props }, ref) => {
|
|
479
|
+
if (children === void 0 && code === void 0 || String(code).trim().length === 0) {
|
|
480
|
+
return /* @__PURE__ */ jsx21(Placeholder2, { innerRef: ref, ...props });
|
|
481
|
+
}
|
|
482
|
+
return /* @__PURE__ */ jsx21("code", { ...props, ref, children: code ?? children });
|
|
403
483
|
});
|
|
404
484
|
CodeText.displayName = "CodeText";
|
|
405
485
|
|
|
@@ -771,6 +851,382 @@ var VimeoSpinner = forwardRef32(
|
|
|
771
851
|
}
|
|
772
852
|
);
|
|
773
853
|
VimeoSpinner.displayName = "VimeoSpinner";
|
|
854
|
+
|
|
855
|
+
// src/xml-node.tsx
|
|
856
|
+
import {
|
|
857
|
+
ReactSdkContext as ReactSdkContext4
|
|
858
|
+
} from "@webstudio-is/react-sdk";
|
|
859
|
+
import {
|
|
860
|
+
Children,
|
|
861
|
+
createElement as createElement4,
|
|
862
|
+
forwardRef as forwardRef33,
|
|
863
|
+
useContext as useContext7
|
|
864
|
+
} from "react";
|
|
865
|
+
import { jsx as jsx30, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
866
|
+
var XmlNode = forwardRef33(
|
|
867
|
+
({ tag = "", children, ...props }, ref) => {
|
|
868
|
+
const { renderer } = useContext7(ReactSdkContext4);
|
|
869
|
+
const attributeEntries = Object.entries(props).filter(
|
|
870
|
+
([key]) => key.startsWith("data-") === false && key.startsWith("aria-") === false
|
|
871
|
+
).filter(([key]) => key !== "tabIndex").filter(([, value]) => typeof value !== "function");
|
|
872
|
+
if (renderer === void 0) {
|
|
873
|
+
const attrProps = Object.fromEntries(attributeEntries);
|
|
874
|
+
return createElement4(tag, attrProps, children);
|
|
875
|
+
}
|
|
876
|
+
const isTextChild = Children.toArray(children).every(
|
|
877
|
+
(child) => typeof child === "string"
|
|
878
|
+
);
|
|
879
|
+
const elementName = tag.replace(/^[^\p{L}_]+/u, "").replaceAll(/[^\p{L}\p{N}\-._]+/gu, "");
|
|
880
|
+
const attributes = attributeEntries.map(
|
|
881
|
+
([key, value]) => `${key}=${JSON.stringify(value)}`
|
|
882
|
+
);
|
|
883
|
+
return /* @__PURE__ */ jsxs2("div", { style: { display: isTextChild ? "flex" : "contents" }, ...props, children: [
|
|
884
|
+
/* @__PURE__ */ jsxs2("div", { style: { color: "rgb(16, 23, 233)" }, children: [
|
|
885
|
+
"<",
|
|
886
|
+
[elementName, ...attributes].join(" "),
|
|
887
|
+
">"
|
|
888
|
+
] }),
|
|
889
|
+
/* @__PURE__ */ jsx30("div", { ref, style: { marginLeft: isTextChild ? 0 : "1rem" }, children }),
|
|
890
|
+
/* @__PURE__ */ jsxs2("div", { style: { color: "rgb(16, 23, 233)" }, children: [
|
|
891
|
+
"</",
|
|
892
|
+
elementName,
|
|
893
|
+
">"
|
|
894
|
+
] })
|
|
895
|
+
] });
|
|
896
|
+
}
|
|
897
|
+
);
|
|
898
|
+
XmlNode.displayName = "XmlNode";
|
|
899
|
+
|
|
900
|
+
// src/time.tsx
|
|
901
|
+
import * as React from "react";
|
|
902
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
903
|
+
var languages = [
|
|
904
|
+
"af",
|
|
905
|
+
"am",
|
|
906
|
+
"ar",
|
|
907
|
+
"az",
|
|
908
|
+
"be",
|
|
909
|
+
"bg",
|
|
910
|
+
"bn",
|
|
911
|
+
"bs",
|
|
912
|
+
"ca",
|
|
913
|
+
"cs",
|
|
914
|
+
"cy",
|
|
915
|
+
"da",
|
|
916
|
+
"de",
|
|
917
|
+
"el",
|
|
918
|
+
"en",
|
|
919
|
+
"es",
|
|
920
|
+
"et",
|
|
921
|
+
"eu",
|
|
922
|
+
"fa",
|
|
923
|
+
"fi",
|
|
924
|
+
"fr",
|
|
925
|
+
"ga",
|
|
926
|
+
"gl",
|
|
927
|
+
"gu",
|
|
928
|
+
"he",
|
|
929
|
+
"hi",
|
|
930
|
+
"hr",
|
|
931
|
+
"hu",
|
|
932
|
+
"hy",
|
|
933
|
+
"id",
|
|
934
|
+
"is",
|
|
935
|
+
"it",
|
|
936
|
+
"ja",
|
|
937
|
+
"ka",
|
|
938
|
+
"kk",
|
|
939
|
+
"km",
|
|
940
|
+
"kn",
|
|
941
|
+
"ko",
|
|
942
|
+
"ky",
|
|
943
|
+
"lb",
|
|
944
|
+
"lt",
|
|
945
|
+
"lv",
|
|
946
|
+
"mk",
|
|
947
|
+
"ml",
|
|
948
|
+
"mn",
|
|
949
|
+
"mr",
|
|
950
|
+
"ms",
|
|
951
|
+
"mt",
|
|
952
|
+
"nb",
|
|
953
|
+
"nl",
|
|
954
|
+
"nn",
|
|
955
|
+
"pl",
|
|
956
|
+
"pt",
|
|
957
|
+
"ro",
|
|
958
|
+
"ru",
|
|
959
|
+
"si",
|
|
960
|
+
"sk",
|
|
961
|
+
"sl",
|
|
962
|
+
"sq",
|
|
963
|
+
"sr",
|
|
964
|
+
"sv",
|
|
965
|
+
"sw",
|
|
966
|
+
"ta",
|
|
967
|
+
"te",
|
|
968
|
+
"th",
|
|
969
|
+
"tr",
|
|
970
|
+
"uk",
|
|
971
|
+
"ur",
|
|
972
|
+
"uz",
|
|
973
|
+
"vi",
|
|
974
|
+
"zh"
|
|
975
|
+
];
|
|
976
|
+
var countries = [
|
|
977
|
+
"AF",
|
|
978
|
+
"AL",
|
|
979
|
+
"DZ",
|
|
980
|
+
"AS",
|
|
981
|
+
"AD",
|
|
982
|
+
"AO",
|
|
983
|
+
"AI",
|
|
984
|
+
"AQ",
|
|
985
|
+
"AG",
|
|
986
|
+
"AR",
|
|
987
|
+
"AM",
|
|
988
|
+
"AW",
|
|
989
|
+
"AU",
|
|
990
|
+
"AT",
|
|
991
|
+
"AZ",
|
|
992
|
+
"BS",
|
|
993
|
+
"BH",
|
|
994
|
+
"BD",
|
|
995
|
+
"BB",
|
|
996
|
+
"BY",
|
|
997
|
+
"BE",
|
|
998
|
+
"BZ",
|
|
999
|
+
"BJ",
|
|
1000
|
+
"BM",
|
|
1001
|
+
"BT",
|
|
1002
|
+
"BO",
|
|
1003
|
+
"BA",
|
|
1004
|
+
"BW",
|
|
1005
|
+
"BR",
|
|
1006
|
+
"BN",
|
|
1007
|
+
"BG",
|
|
1008
|
+
"BF",
|
|
1009
|
+
"BI",
|
|
1010
|
+
"CV",
|
|
1011
|
+
"KH",
|
|
1012
|
+
"CM",
|
|
1013
|
+
"CA",
|
|
1014
|
+
"KY",
|
|
1015
|
+
"CF",
|
|
1016
|
+
"TD",
|
|
1017
|
+
"CL",
|
|
1018
|
+
"CN",
|
|
1019
|
+
"CO",
|
|
1020
|
+
"KM",
|
|
1021
|
+
"CG",
|
|
1022
|
+
"CD",
|
|
1023
|
+
"CR",
|
|
1024
|
+
"HR",
|
|
1025
|
+
"CU",
|
|
1026
|
+
"CY",
|
|
1027
|
+
"CZ",
|
|
1028
|
+
"DK",
|
|
1029
|
+
"DJ",
|
|
1030
|
+
"DM",
|
|
1031
|
+
"DO",
|
|
1032
|
+
"EC",
|
|
1033
|
+
"EG",
|
|
1034
|
+
"SV",
|
|
1035
|
+
"GQ",
|
|
1036
|
+
"ER",
|
|
1037
|
+
"EE",
|
|
1038
|
+
"SZ",
|
|
1039
|
+
"ET",
|
|
1040
|
+
"FJ",
|
|
1041
|
+
"FI",
|
|
1042
|
+
"FR",
|
|
1043
|
+
"GA",
|
|
1044
|
+
"GM",
|
|
1045
|
+
"GE",
|
|
1046
|
+
"DE",
|
|
1047
|
+
"GH",
|
|
1048
|
+
"GR",
|
|
1049
|
+
"GD",
|
|
1050
|
+
"GT",
|
|
1051
|
+
"GN",
|
|
1052
|
+
"GW",
|
|
1053
|
+
"GY",
|
|
1054
|
+
"HT",
|
|
1055
|
+
"HN",
|
|
1056
|
+
"HU",
|
|
1057
|
+
"IS",
|
|
1058
|
+
"IN",
|
|
1059
|
+
"ID",
|
|
1060
|
+
"IR",
|
|
1061
|
+
"IQ",
|
|
1062
|
+
"IE",
|
|
1063
|
+
"IL",
|
|
1064
|
+
"IT",
|
|
1065
|
+
"JM",
|
|
1066
|
+
"JP",
|
|
1067
|
+
"JO",
|
|
1068
|
+
"KZ",
|
|
1069
|
+
"KE",
|
|
1070
|
+
"KI",
|
|
1071
|
+
"KP",
|
|
1072
|
+
"KR",
|
|
1073
|
+
"KW",
|
|
1074
|
+
"KG",
|
|
1075
|
+
"LA",
|
|
1076
|
+
"LV",
|
|
1077
|
+
"LB",
|
|
1078
|
+
"LS",
|
|
1079
|
+
"LR",
|
|
1080
|
+
"LY",
|
|
1081
|
+
"LI",
|
|
1082
|
+
"LT",
|
|
1083
|
+
"LU",
|
|
1084
|
+
"MG",
|
|
1085
|
+
"MW",
|
|
1086
|
+
"MY",
|
|
1087
|
+
"MV",
|
|
1088
|
+
"ML",
|
|
1089
|
+
"MT",
|
|
1090
|
+
"MH",
|
|
1091
|
+
"MR",
|
|
1092
|
+
"MU",
|
|
1093
|
+
"MX",
|
|
1094
|
+
"FM",
|
|
1095
|
+
"MD",
|
|
1096
|
+
"MC",
|
|
1097
|
+
"MN",
|
|
1098
|
+
"ME",
|
|
1099
|
+
"MA",
|
|
1100
|
+
"MZ",
|
|
1101
|
+
"MM",
|
|
1102
|
+
"NA",
|
|
1103
|
+
"NR",
|
|
1104
|
+
"NP",
|
|
1105
|
+
"NL",
|
|
1106
|
+
"NZ",
|
|
1107
|
+
"NI",
|
|
1108
|
+
"NE",
|
|
1109
|
+
"NG",
|
|
1110
|
+
"NO",
|
|
1111
|
+
"OM",
|
|
1112
|
+
"PK",
|
|
1113
|
+
"PW",
|
|
1114
|
+
"PA",
|
|
1115
|
+
"PG",
|
|
1116
|
+
"PY",
|
|
1117
|
+
"PE",
|
|
1118
|
+
"PH",
|
|
1119
|
+
"PL",
|
|
1120
|
+
"PT",
|
|
1121
|
+
"QA",
|
|
1122
|
+
"RO",
|
|
1123
|
+
"RU",
|
|
1124
|
+
"RW",
|
|
1125
|
+
"KN",
|
|
1126
|
+
"LC",
|
|
1127
|
+
"VC",
|
|
1128
|
+
"WS",
|
|
1129
|
+
"SM",
|
|
1130
|
+
"ST",
|
|
1131
|
+
"SA",
|
|
1132
|
+
"SN",
|
|
1133
|
+
"RS",
|
|
1134
|
+
"SC",
|
|
1135
|
+
"SL",
|
|
1136
|
+
"SG",
|
|
1137
|
+
"SK",
|
|
1138
|
+
"SI",
|
|
1139
|
+
"SB",
|
|
1140
|
+
"SO",
|
|
1141
|
+
"ZA",
|
|
1142
|
+
"SS",
|
|
1143
|
+
"ES",
|
|
1144
|
+
"LK",
|
|
1145
|
+
"SD",
|
|
1146
|
+
"SR",
|
|
1147
|
+
"SE",
|
|
1148
|
+
"CH",
|
|
1149
|
+
"SY",
|
|
1150
|
+
"TW",
|
|
1151
|
+
"TJ",
|
|
1152
|
+
"TZ",
|
|
1153
|
+
"TH",
|
|
1154
|
+
"TL",
|
|
1155
|
+
"TG",
|
|
1156
|
+
"TO",
|
|
1157
|
+
"TT",
|
|
1158
|
+
"TN",
|
|
1159
|
+
"TR",
|
|
1160
|
+
"TM",
|
|
1161
|
+
"TV",
|
|
1162
|
+
"UG",
|
|
1163
|
+
"UA",
|
|
1164
|
+
"AE",
|
|
1165
|
+
"GB",
|
|
1166
|
+
"US",
|
|
1167
|
+
"UY",
|
|
1168
|
+
"UZ",
|
|
1169
|
+
"VU",
|
|
1170
|
+
"VA",
|
|
1171
|
+
"VE",
|
|
1172
|
+
"VN",
|
|
1173
|
+
"YE",
|
|
1174
|
+
"ZM",
|
|
1175
|
+
"ZW"
|
|
1176
|
+
];
|
|
1177
|
+
var INITIAL_DATE_STRING = "dateTime attribute is not set";
|
|
1178
|
+
var INVALID_DATE_STRING = "";
|
|
1179
|
+
var DEFAULT_LANGUAGE = "en";
|
|
1180
|
+
var DEFAULT_COUNTRY = "GB";
|
|
1181
|
+
var DEFAULT_DATE_STYLE = "medium";
|
|
1182
|
+
var DEFAULT_TIME_STYLE = "none";
|
|
1183
|
+
var languageOrDefault = (language) => {
|
|
1184
|
+
return languages.includes(language) ? language : DEFAULT_LANGUAGE;
|
|
1185
|
+
};
|
|
1186
|
+
var countryOrDefault = (country) => {
|
|
1187
|
+
return countries.includes(country) ? country : DEFAULT_COUNTRY;
|
|
1188
|
+
};
|
|
1189
|
+
var dateStyleOrUndefined = (value) => {
|
|
1190
|
+
if (["full", "long", "medium", "short"].includes(value)) {
|
|
1191
|
+
return value;
|
|
1192
|
+
}
|
|
1193
|
+
return void 0;
|
|
1194
|
+
};
|
|
1195
|
+
var timeStyleOrUndefined = (value) => {
|
|
1196
|
+
if (["full", "long", "medium", "short"].includes(value)) {
|
|
1197
|
+
return value;
|
|
1198
|
+
}
|
|
1199
|
+
return void 0;
|
|
1200
|
+
};
|
|
1201
|
+
var Time = React.forwardRef(
|
|
1202
|
+
({
|
|
1203
|
+
language = DEFAULT_LANGUAGE,
|
|
1204
|
+
country = DEFAULT_COUNTRY,
|
|
1205
|
+
dateStyle = DEFAULT_DATE_STYLE,
|
|
1206
|
+
timeStyle = DEFAULT_TIME_STYLE,
|
|
1207
|
+
datetime = INITIAL_DATE_STRING,
|
|
1208
|
+
...props
|
|
1209
|
+
}, ref) => {
|
|
1210
|
+
const locale = `${languageOrDefault(language)}-${countryOrDefault(
|
|
1211
|
+
country
|
|
1212
|
+
)}`;
|
|
1213
|
+
const options = {
|
|
1214
|
+
dateStyle: dateStyleOrUndefined(dateStyle),
|
|
1215
|
+
timeStyle: timeStyleOrUndefined(timeStyle)
|
|
1216
|
+
};
|
|
1217
|
+
const datetimeString = datetime === null ? INVALID_DATE_STRING : datetime.toString();
|
|
1218
|
+
const date = new Date(datetimeString);
|
|
1219
|
+
const isValidDate = false === Number.isNaN(date.getTime());
|
|
1220
|
+
let formattedDate = datetimeString;
|
|
1221
|
+
if (isValidDate) {
|
|
1222
|
+
try {
|
|
1223
|
+
formattedDate = new Intl.DateTimeFormat(locale, options).format(date);
|
|
1224
|
+
} catch {
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
return /* @__PURE__ */ jsx31("time", { ref, dateTime: datetimeString, ...props, children: formattedDate });
|
|
1228
|
+
}
|
|
1229
|
+
);
|
|
774
1230
|
export {
|
|
775
1231
|
Blockquote,
|
|
776
1232
|
Body,
|
|
@@ -800,8 +1256,10 @@ export {
|
|
|
800
1256
|
Superscript,
|
|
801
1257
|
Text,
|
|
802
1258
|
Textarea,
|
|
1259
|
+
Time,
|
|
803
1260
|
Vimeo,
|
|
804
1261
|
VimeoPlayButton,
|
|
805
1262
|
VimeoPreviewImage,
|
|
806
|
-
VimeoSpinner
|
|
1263
|
+
VimeoSpinner,
|
|
1264
|
+
XmlNode
|
|
807
1265
|
};
|