@plasmicapp/react-web 0.2.73 → 0.2.78
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/all.d.ts +9 -6
- package/dist/react-web.cjs.development.js +37 -15
- package/dist/react-web.cjs.development.js.map +1 -1
- package/dist/react-web.cjs.production.min.js +1 -1
- package/dist/react-web.cjs.production.min.js.map +1 -1
- package/dist/react-web.esm.js +37 -15
- package/dist/react-web.esm.js.map +1 -1
- package/dist/render/PlasmicImg/index.d.ts +9 -6
- package/lib/plasmic.css +9 -1
- package/package.json +2 -2
- package/skinny/dist/{collection-utils-4dae6efa.js → collection-utils-21ad9cae.js} +4 -3
- package/skinny/dist/{collection-utils-4dae6efa.js.map → collection-utils-21ad9cae.js.map} +1 -1
- package/skinny/dist/{collection-utils-57ec40f9.js → collection-utils-87ffc0ed.js} +4 -3
- package/skinny/dist/{collection-utils-57ec40f9.js.map → collection-utils-87ffc0ed.js.map} +1 -1
- package/skinny/dist/collection-utils-96cde83c.js +238 -0
- package/skinny/dist/collection-utils-96cde83c.js.map +1 -0
- package/skinny/dist/collection-utils-976df07d.js +238 -0
- package/skinny/dist/collection-utils-976df07d.js.map +1 -0
- package/skinny/dist/collection-utils-aadc3a43.js +238 -0
- package/skinny/dist/collection-utils-aadc3a43.js.map +1 -0
- package/skinny/dist/collection-utils-b8a2fd59.js +238 -0
- package/skinny/dist/collection-utils-b8a2fd59.js.map +1 -0
- package/skinny/dist/index.js +3 -3
- package/skinny/dist/plume/checkbox/index.js +3 -3
- package/skinny/dist/plume/menu/index.js +4 -4
- package/skinny/dist/plume/menu-button/index.js +3 -3
- package/skinny/dist/plume/select/index.js +4 -4
- package/skinny/dist/plume/switch/index.js +3 -3
- package/skinny/dist/plume/triggered-overlay/index.js +3 -3
- package/skinny/dist/props-utils-1f98cfd3.js +40 -0
- package/skinny/dist/props-utils-1f98cfd3.js.map +1 -0
- package/skinny/dist/{props-utils-5c0ad25a.js → props-utils-40224c71.js} +3 -2
- package/skinny/dist/props-utils-40224c71.js.map +1 -0
- package/skinny/dist/props-utils-69f9ba8b.js +40 -0
- package/skinny/dist/props-utils-69f9ba8b.js.map +1 -0
- package/skinny/dist/{props-utils-fd5f444e.js → props-utils-6cf101b2.js} +2 -2
- package/skinny/dist/{props-utils-5c0ad25a.js.map → props-utils-6cf101b2.js.map} +1 -1
- package/skinny/dist/props-utils-754f655a.js +39 -0
- package/skinny/dist/{props-utils-fd5f444e.js.map → props-utils-754f655a.js.map} +1 -1
- package/skinny/dist/props-utils-85691c9c.js +40 -0
- package/skinny/dist/props-utils-85691c9c.js.map +1 -0
- package/skinny/dist/{react-utils-2a2fd6c9.js → react-utils-06bae09a.js} +14 -61
- package/skinny/dist/react-utils-06bae09a.js.map +1 -0
- package/skinny/dist/react-utils-14af9d28.js +172 -0
- package/skinny/dist/react-utils-14af9d28.js.map +1 -0
- package/skinny/dist/react-utils-7c01e440.js +172 -0
- package/skinny/dist/react-utils-7c01e440.js.map +1 -0
- package/skinny/dist/react-utils-834a65c3.js +254 -0
- package/skinny/dist/react-utils-834a65c3.js.map +1 -0
- package/skinny/dist/{react-utils-675565b4.js → react-utils-ae69f4e0.js} +3 -46
- package/skinny/dist/react-utils-ae69f4e0.js.map +1 -0
- package/skinny/dist/react-utils-cca81efc.js +245 -0
- package/skinny/dist/react-utils-cca81efc.js.map +1 -0
- package/skinny/dist/render/PlasmicImg/index.d.ts +9 -6
- package/skinny/dist/render/PlasmicImg/index.js +43 -17
- package/skinny/dist/render/PlasmicImg/index.js.map +1 -1
- package/skinny/dist/stories/Button.d.ts +29 -0
- package/skinny/dist/stories/Header.d.ts +10 -0
- package/skinny/dist/stories/Page.d.ts +10 -0
- package/skinny/dist/tslib.es6-10d3f595.js +132 -0
- package/skinny/dist/tslib.es6-10d3f595.js.map +1 -0
- package/skinny/dist/tslib.es6-d26ffe68.js +132 -0
- package/skinny/dist/tslib.es6-d26ffe68.js.map +1 -0
- package/skinny/dist/react-utils-2a2fd6c9.js.map +0 -1
- package/skinny/dist/react-utils-675565b4.js.map +0 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { h as mapValues, j as groupBy, p as pick } from './react-utils-834a65c3.js';
|
|
3
|
+
import 'tslib';
|
|
4
|
+
|
|
5
|
+
var PLUME_STRICT_MODE = true;
|
|
6
|
+
function mergeVariantToggles() {
|
|
7
|
+
var toggles = [];
|
|
8
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
9
|
+
toggles[_i] = arguments[_i];
|
|
10
|
+
}
|
|
11
|
+
var definedToggles = toggles.filter(function (x) { return !!x.def; });
|
|
12
|
+
var grouped = groupBy(definedToggles, function (_a) {
|
|
13
|
+
var def = _a.def;
|
|
14
|
+
return def.group;
|
|
15
|
+
});
|
|
16
|
+
return mapValues(grouped, function (subToggles) {
|
|
17
|
+
return Object.fromEntries(subToggles.map(function (_a) {
|
|
18
|
+
var def = _a.def, active = _a.active;
|
|
19
|
+
return [def.variant, !!active];
|
|
20
|
+
}));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function noOutline() {
|
|
24
|
+
return { outline: "none" };
|
|
25
|
+
}
|
|
26
|
+
function getPlumeType(child) {
|
|
27
|
+
var _a;
|
|
28
|
+
if (!React.isValidElement(child)) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
var childType = child.type;
|
|
32
|
+
return (childType.__plumeType || ((_a = childType.getPlumeType) === null || _a === void 0 ? void 0 : _a.call(childType, child.props)));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function getStyleProps(props) {
|
|
36
|
+
return pick(props, "className", "style");
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { PLUME_STRICT_MODE as P, getPlumeType as a, getStyleProps as g, mergeVariantToggles as m, noOutline as n };
|
|
40
|
+
//# sourceMappingURL=props-utils-85691c9c.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"props-utils-85691c9c.js","sources":["../../src/plume/plume-utils.ts","../../src/plume/props-utils.ts"],"sourcesContent":["import * as React from \"react\";\nimport { groupBy, mapValues } from \"../common\";\nimport { SingleChoiceArg } from \"../render/elements\";\n\nexport let PLUME_STRICT_MODE = true;\n\nexport function setPlumeStrictMode(mode: boolean) {\n PLUME_STRICT_MODE = mode;\n}\n\ntype VariantArgChoices<T> = T extends (infer M)[]\n ? M\n : T extends SingleChoiceArg<infer M>\n ? M\n : never;\ntype VariantArgsChoices<V> = { [k in keyof V]-?: VariantArgChoices<V[k]> };\ntype DictValues<V extends Record<string, any>> = V[keyof V];\ntype DictTuples<V extends Record<string, any>> = DictValues<\n { [K in keyof V]: [K, V[K]] }\n>;\nexport type VariantDefTuple<V> = DictTuples<VariantArgsChoices<V>>;\n\ntype DistributeTuple<T> = T extends [infer T1, infer T2]\n ? { group: T1; variant: T2 }\n : never;\n\nexport type VariantDef<V> = DistributeTuple<VariantDefTuple<V>>;\n\nexport type PlasmicClass<\n V extends Record<string, any>,\n A extends Record<string, any>,\n O extends Record<string, any>\n> = {\n (props: { variants?: V; args?: A; overrides?: O }): React.ReactElement | null;\n internalVariantProps: (keyof V)[];\n internalArgProps: (keyof A)[];\n};\n\nexport type AnyPlasmicClass = PlasmicClass<any, any, any>;\n\nexport type PlasmicClassVariants<\n C extends AnyPlasmicClass\n> = C extends PlasmicClass<infer V, any, any> ? V : unknown;\nexport type PlasmicClassArgs<\n C extends AnyPlasmicClass\n> = C extends PlasmicClass<any, infer A, any> ? A : unknown;\nexport type PlasmicClassOverrides<\n C extends AnyPlasmicClass\n> = C extends PlasmicClass<any, any, infer O> ? O : unknown;\n\ntype BooleanLike = boolean | undefined | null;\n\nexport function mergeVariantToggles<V>(\n ...toggles: { def?: VariantDef<V>; active: BooleanLike }[]\n) {\n const definedToggles = toggles.filter((x) => !!x.def) as {\n def: VariantDef<V>;\n active: BooleanLike;\n }[];\n const grouped = groupBy(definedToggles, ({ def }) => def.group as string);\n return mapValues(grouped, (subToggles) => {\n return Object.fromEntries(\n subToggles.map(({ def, active }) => [def.variant, !!active])\n );\n });\n}\n\nexport function noOutline() {\n return { outline: \"none\" };\n}\n\nexport function getPlumeType(child: React.ReactChild): string | undefined {\n if (!React.isValidElement(child)) {\n return undefined;\n }\n const childType = child.type as any;\n return (childType.__plumeType || childType.getPlumeType?.(child.props)) as\n | string\n | undefined;\n}\n","import * as React from \"react\";\nimport { pick, pickBy } from \"../common\";\nimport {\n AnyPlasmicClass,\n PlasmicClassArgs,\n PlasmicClassOverrides,\n PlasmicClassVariants,\n} from \"./plume-utils\";\n\nexport interface StyleProps {\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function getStyleProps<P extends StyleProps>(props: P): StyleProps {\n return pick(props, \"className\", \"style\");\n}\n\nexport function getDefaultPlasmicProps<C extends AnyPlasmicClass>(\n plasmicClass: C,\n props: Record<string, any>\n) {\n return {\n plasmicProps: {\n variants: pick(\n props,\n ...plasmicClass.internalVariantProps\n ) as PlasmicClassVariants<C>,\n args: pick(\n props,\n ...plasmicClass.internalArgProps\n ) as PlasmicClassArgs<C>,\n overrides: {} as PlasmicClassOverrides<C>,\n },\n };\n}\n\nconst RE_DATA_PROP = /^(data-.*)$/;\n\nexport function getDataProps(props: Record<string, any>) {\n return pickBy(props, (k) => RE_DATA_PROP.test(k));\n}\n"],"names":[],"mappings":";;;;IAIW,iBAAiB,GAAG,KAAK;SAgDpB,mBAAmB;IACjC,iBAA0D;SAA1D,UAA0D,EAA1D,qBAA0D,EAA1D,IAA0D;QAA1D,4BAA0D;;IAE1D,IAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,GAAG,GAAA,CAGjD,CAAC;IACJ,IAAM,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,UAAC,EAAO;YAAL,GAAG,SAAA;QAAO,OAAA,GAAG,CAAC,KAAe;KAAA,CAAC,CAAC;IAC1E,OAAO,SAAS,CAAC,OAAO,EAAE,UAAC,UAAU;QACnC,OAAO,MAAM,CAAC,WAAW,CACvB,UAAU,CAAC,GAAG,CAAC,UAAC,EAAe;gBAAb,GAAG,SAAA,EAAE,MAAM,YAAA;YAAO,OAAA,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;SAAA,CAAC,CAC7D,CAAC;KACH,CAAC,CAAC;AACL,CAAC;SAEe,SAAS;IACvB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;SAEe,YAAY,CAAC,KAAuB;;IAClD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QAChC,OAAO,SAAS,CAAC;KAClB;IACD,IAAM,SAAS,GAAG,KAAK,CAAC,IAAW,CAAC;IACpC,QAAQ,SAAS,CAAC,WAAW,KAAI,MAAA,SAAS,CAAC,YAAY,+CAAtB,SAAS,EAAgB,KAAK,CAAC,KAAK,CAAC,CAAA,EAExD;AAChB;;SCjEgB,aAAa,CAAuB,KAAQ;IAC1D,OAAO,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAC3C;;;;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { __spreadArray, __assign } from 'tslib';
|
|
1
2
|
import classNames from 'classnames';
|
|
2
3
|
import React__default from 'react';
|
|
3
4
|
|
|
@@ -9,9 +10,6 @@ function pick(obj) {
|
|
|
9
10
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
10
11
|
keys[_i - 1] = arguments[_i];
|
|
11
12
|
}
|
|
12
|
-
if (Object.keys(obj).length === 0) {
|
|
13
|
-
return obj;
|
|
14
|
-
}
|
|
15
13
|
var res = {};
|
|
16
14
|
for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
|
|
17
15
|
var key = keys_1[_a];
|
|
@@ -26,9 +24,6 @@ function omit(obj) {
|
|
|
26
24
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
27
25
|
keys[_i - 1] = arguments[_i];
|
|
28
26
|
}
|
|
29
|
-
if (Object.keys(obj).length === 0) {
|
|
30
|
-
return obj;
|
|
31
|
-
}
|
|
32
27
|
var res = {};
|
|
33
28
|
for (var _a = 0, _b = Object.keys(obj); _a < _b.length; _a++) {
|
|
34
29
|
var key = _b[_a];
|
|
@@ -58,6 +53,15 @@ function chainSingleArgFuncs() {
|
|
|
58
53
|
return res;
|
|
59
54
|
};
|
|
60
55
|
}
|
|
56
|
+
function ensure(x) {
|
|
57
|
+
if (x === null || x === undefined) {
|
|
58
|
+
debugger;
|
|
59
|
+
throw new Error("Value must not be undefined or null");
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
return x;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
61
65
|
function isString(x) {
|
|
62
66
|
return typeof x === "string";
|
|
63
67
|
}
|
|
@@ -83,54 +87,6 @@ function mapValues(obj, mapper) {
|
|
|
83
87
|
return result;
|
|
84
88
|
}
|
|
85
89
|
|
|
86
|
-
/*! *****************************************************************************
|
|
87
|
-
Copyright (c) Microsoft Corporation.
|
|
88
|
-
|
|
89
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
|
90
|
-
purpose with or without fee is hereby granted.
|
|
91
|
-
|
|
92
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
93
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
94
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
95
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
96
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
97
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
98
|
-
PERFORMANCE OF THIS SOFTWARE.
|
|
99
|
-
***************************************************************************** */
|
|
100
|
-
|
|
101
|
-
var __assign = function() {
|
|
102
|
-
__assign = Object.assign || function __assign(t) {
|
|
103
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
104
|
-
s = arguments[i];
|
|
105
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
106
|
-
}
|
|
107
|
-
return t;
|
|
108
|
-
};
|
|
109
|
-
return __assign.apply(this, arguments);
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
function __rest(s, e) {
|
|
113
|
-
var t = {};
|
|
114
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
115
|
-
t[p] = s[p];
|
|
116
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
117
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
118
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
119
|
-
t[p[i]] = s[p[i]];
|
|
120
|
-
}
|
|
121
|
-
return t;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
function __spreadArray(to, from, pack) {
|
|
125
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
126
|
-
if (ar || !(i in from)) {
|
|
127
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
128
|
-
ar[i] = from[i];
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return to.concat(ar || from);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
90
|
var isBrowser = typeof window !== "undefined";
|
|
135
91
|
var NONE = Symbol("NONE");
|
|
136
92
|
var useIsomorphicLayoutEffect = isBrowser
|
|
@@ -139,7 +95,7 @@ var useIsomorphicLayoutEffect = isBrowser
|
|
|
139
95
|
function createElementWithChildren(elementType, props, children) {
|
|
140
96
|
if (Array.isArray(children)) {
|
|
141
97
|
return React__default.createElement.apply(React__default, __spreadArray([elementType,
|
|
142
|
-
props], children
|
|
98
|
+
props], children));
|
|
143
99
|
}
|
|
144
100
|
else if (children || "children" in props) {
|
|
145
101
|
// Only call React.createElement with `children` if there are actual children,
|
|
@@ -161,7 +117,7 @@ function ensureNotArray(children) {
|
|
|
161
117
|
return children[0];
|
|
162
118
|
}
|
|
163
119
|
else {
|
|
164
|
-
return React__default.createElement.apply(React__default, __spreadArray([React__default.Fragment, {}], children
|
|
120
|
+
return React__default.createElement.apply(React__default, __spreadArray([React__default.Fragment, {}], children));
|
|
165
121
|
}
|
|
166
122
|
}
|
|
167
123
|
else {
|
|
@@ -197,9 +153,6 @@ function mergeProps(props) {
|
|
|
197
153
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
198
154
|
restProps[_i - 1] = arguments[_i];
|
|
199
155
|
}
|
|
200
|
-
if (restProps.every(function (rest) { return Object.keys(rest).length === 0; })) {
|
|
201
|
-
return props;
|
|
202
|
-
}
|
|
203
156
|
var result = __assign({}, props);
|
|
204
157
|
for (var _a = 0, restProps_1 = restProps; _a < restProps_1.length; _a++) {
|
|
205
158
|
var rest = restProps_1[_a];
|
|
@@ -297,5 +250,5 @@ function getElementTypeName(element) {
|
|
|
297
250
|
}
|
|
298
251
|
}
|
|
299
252
|
|
|
300
|
-
export { NONE as N,
|
|
301
|
-
//# sourceMappingURL=react-utils-
|
|
253
|
+
export { NONE as N, mergePropVals as a, isSubset as b, createElementWithChildren as c, chainSingleArgFuncs as d, ensureNotArray as e, mergeRefs as f, ensure as g, isBrowser as h, isReactNode as i, mapValues as j, groupBy as k, isString as l, mergeProps as m, notNil as n, omit as o, pick as p, getElementTypeName as q, toChildArray as t, useIsomorphicLayoutEffect as u };
|
|
254
|
+
//# sourceMappingURL=react-utils-06bae09a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-utils-06bae09a.js","sources":["../../src/common.ts","../../src/react-utils.tsx"],"sourcesContent":["export function notNil<T>(x: T | undefined | null): x is T {\n return x != null;\n}\n\nexport function pick<T>(\n obj: T,\n ...keys: (string | number | symbol)[]\n): Partial<T> {\n const res: any = {};\n for (const key of keys) {\n if (key in obj) {\n res[key] = obj[key as keyof T];\n }\n }\n return res as Partial<T>;\n}\n\nexport function pickBy<T>(\n obj: T,\n func: (key: string, val: any) => boolean\n): Partial<T> {\n const res: any = {};\n for (const [key, val] of Object.entries(obj)) {\n if (func(key, val)) {\n res[key] = obj[key as keyof T];\n }\n }\n return res as Partial<T>;\n}\n\nexport function omit<T>(obj: T, ...keys: (keyof T)[]): Partial<T> {\n const res: Partial<T> = {};\n for (const key of Object.keys(obj) as (keyof T)[]) {\n if (!keys.includes(key)) {\n res[key] = obj[key];\n }\n }\n return res;\n}\n\nexport function isSubset<T>(a1: T[], a2: T[]) {\n return a1.every((x) => a2.includes(x));\n}\n\nexport function chainSingleArgFuncs<A>(...funcs: ((arg: A) => A)[]) {\n if (funcs.length === 0) {\n return undefined;\n }\n return (arg: A) => {\n let res: A = arg;\n for (const func of funcs) {\n res = func(res);\n }\n return res;\n };\n}\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n debugger;\n throw new Error(`Value must not be undefined or null`);\n } else {\n return x;\n }\n}\n\nexport function isString(x: any): x is string {\n return typeof x === \"string\";\n}\n\nexport function groupBy<T>(\n collection: T[],\n keyFunc: (x: T) => string\n): Record<string, T[]> {\n const result: Record<string, T[]> = {};\n for (const obj of collection) {\n const key = keyFunc(obj);\n if (key in result) {\n result[key].push(obj);\n } else {\n result[key] = [obj];\n }\n }\n return result;\n}\n\nexport function mapValues<V, V2>(\n obj: Record<string, V>,\n mapper: (value: V) => V2\n): Record<string, V2> {\n const result: Record<string, V2> = {};\n for (const key in obj) {\n result[key] = mapper(obj[key]);\n }\n return result;\n}\n","import classNames from \"classnames\";\nimport React from \"react\";\n\nexport const isBrowser = typeof window !== \"undefined\";\nexport const NONE = Symbol(\"NONE\");\n\nexport const useIsomorphicLayoutEffect = isBrowser\n ? React.useLayoutEffect\n : React.useEffect;\n\nexport function createElementWithChildren(\n elementType: any,\n props: any,\n children: React.ReactNode\n) {\n if (Array.isArray(children)) {\n return React.createElement(\n elementType,\n props,\n ...children\n ) as React.ReactElement;\n } else if (children || \"children\" in props) {\n // Only call React.createElement with `children` if there are actual children,\n // or if there was an explicit (albeit undefined) children passed via\n // props. Otherwise, if you pass `undefined` as the children argument\n // to React.createElement, the created element will have prop {children: undefined}.\n // If the `root` is an PlasmicGeneratedComponent, and these props with {children: undefined}\n // are used, then it will be taken as a `children` override, and will thus blank out\n // everything under the root node.\n return React.createElement(elementType, props, children);\n } else {\n return React.createElement(elementType, props);\n }\n}\n\nexport function ensureNotArray(children: React.ReactNode) {\n if (Array.isArray(children)) {\n if (children.length === 1) {\n return children[0];\n } else {\n return React.createElement(React.Fragment, {}, ...children);\n }\n } else {\n return children;\n }\n}\n\n/**\n * Flattens ReactNode into an array of ReactChild, but does NOT replace\n * missing keys with array index, as React.Children.toArray() does.\n */\nexport function toChildArray(children: React.ReactNode): React.ReactChild[] {\n if (isReactChild(children)) {\n return [children];\n } else if (Array.isArray(children)) {\n return children.flatMap(toChildArray);\n } else {\n return [];\n }\n}\n\nexport function isReactText(child: React.ReactNode): child is React.ReactText {\n return typeof child === \"string\" || typeof child === \"number\";\n}\n\nexport function isReactChild(\n child: React.ReactNode\n): child is React.ReactChild {\n return React.isValidElement(child) || isReactText(child);\n}\n\nexport function isReactFragment(\n child: React.ReactNode\n): child is React.ReactElement {\n return React.isValidElement(child) && child.type === React.Fragment;\n}\n\nexport function isReactNode(x: any) {\n return (\n typeof x === \"string\" || typeof x === \"number\" || React.isValidElement(x)\n );\n}\n\n// From https://stackoverflow.com/questions/54775790/forcing-excess-property-checking-on-variable-passed-to-typescript-function\nexport type StrictProps<T, TExpected> = Exclude<\n keyof T,\n keyof TExpected\n> extends never\n ? {}\n : \"Unexpected extraneous props\";\n\nexport type HTMLElementRefOf<T extends keyof JSX.IntrinsicElements> = Exclude<\n React.ComponentProps<T>[\"ref\"],\n string\n>;\n\nexport function mergeProps(\n props: Record<string, any>,\n ...restProps: Record<string, any>[]\n): Record<string, any> {\n const result = { ...props };\n\n for (const rest of restProps) {\n for (const key of Object.keys(rest)) {\n result[key] = mergePropVals(key, result[key], rest[key]);\n }\n }\n\n return result;\n}\n\nfunction updateRef<T>(ref: React.Ref<T> | undefined, value: T | null) {\n if (!ref) {\n return;\n }\n\n if (typeof ref === \"function\") {\n ref(value);\n } else {\n if (!Object.isFrozen(ref)) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n }\n}\n\nexport function mergeRefs<T>(...refs: (React.Ref<T> | undefined)[]) {\n return (value: T) => {\n for (const ref of refs) {\n updateRef(ref, value);\n }\n };\n}\n\nexport function mergePropVals(name: string, val1: any, val2: any): any {\n if (val1 === NONE || val2 === NONE) {\n // The NONE sentinel always skips all merging and returns null\n return null;\n } else if (val1 == null) {\n // If either of them is nil, prefer the other\n return val2;\n } else if (val2 == null) {\n return val1;\n } else if (name === \"className\") {\n // Special case for className -- always combine both class names\n return classNames(val1, val2);\n } else if (name === \"style\") {\n // Special case for style -- always shallow-merge style dicts\n return { ...val1, ...val2 };\n } else if (name === \"ref\") {\n // Special case for ref\n return mergeRefs(val1, val2);\n } else if (typeof val1 !== typeof val2) {\n // If the type of the two values are different, then no way to merge them.\n // Prefer val2.\n return val2;\n } else if (name.startsWith(\"on\") && typeof val1 === \"function\") {\n // Special case for event handlers -- always call both handlers\n return (...args: any[]) => {\n let res: any;\n if (typeof val1 === \"function\") {\n res = val1(...args);\n }\n if (typeof val2 === \"function\") {\n res = val2(...args);\n }\n return res;\n };\n } else {\n // For all else, prefer val2\n return val2;\n }\n}\n\nexport function getElementTypeName(element: React.ReactElement) {\n if (typeof element.type === \"string\") {\n return element.type;\n } else {\n const comp = element.type as any;\n return comp.displayName ?? comp.name ?? comp.render?.name ?? \"Component\";\n }\n}\n"],"names":["React"],"mappings":";;;;SAAgB,MAAM,CAAI,CAAuB;IAC/C,OAAO,CAAC,IAAI,IAAI,CAAC;AACnB,CAAC;SAEe,IAAI,CAClB,GAAM;IACN,cAAqC;SAArC,UAAqC,EAArC,qBAAqC,EAArC,IAAqC;QAArC,6BAAqC;;IAErC,IAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,KAAkB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;QAAnB,IAAM,GAAG,aAAA;QACZ,IAAI,GAAG,IAAI,GAAG,EAAE;YACd,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAc,CAAC,CAAC;SAChC;KACF;IACD,OAAO,GAAiB,CAAC;AAC3B,CAAC;SAee,IAAI,CAAI,GAAM;IAAE,cAAoB;SAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;QAApB,6BAAoB;;IAClD,IAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAkB,UAA+B,EAA/B,KAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAgB,EAA/B,cAA+B,EAA/B,IAA+B,EAAE;QAA9C,IAAM,GAAG,SAAA;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;SACrB;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC;SAEe,QAAQ,CAAI,EAAO,EAAE,EAAO;IAC1C,OAAO,EAAE,CAAC,KAAK,CAAC,UAAC,CAAC,IAAK,OAAA,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;AACzC,CAAC;SAEe,mBAAmB;IAAI,eAA2B;SAA3B,UAA2B,EAA3B,qBAA2B,EAA3B,IAA2B;QAA3B,0BAA2B;;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,UAAC,GAAM;QACZ,IAAI,GAAG,GAAM,GAAG,CAAC;QACjB,KAAmB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK,EAAE;YAArB,IAAM,IAAI,cAAA;YACb,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SACjB;QACD,OAAO,GAAG,CAAC;KACZ,CAAC;AACJ,CAAC;SAEe,MAAM,CAAI,CAAuB;IAC/C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE;QACjC,SAAS;QACT,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;KACxD;SAAM;QACL,OAAO,CAAC,CAAC;KACV;AACH,CAAC;SAEe,QAAQ,CAAC,CAAM;IAC7B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC;AAC/B,CAAC;SAEe,OAAO,CACrB,UAAe,EACf,OAAyB;IAEzB,IAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAkB,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU,EAAE;QAAzB,IAAM,GAAG,mBAAA;QACZ,IAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,GAAG,IAAI,MAAM,EAAE;YACjB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACvB;aAAM;YACL,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACrB;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;SAEe,SAAS,CACvB,GAAsB,EACtB,MAAwB;IAExB,IAAM,MAAM,GAAuB,EAAE,CAAC;IACtC,KAAK,IAAM,GAAG,IAAI,GAAG,EAAE;QACrB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KAChC;IACD,OAAO,MAAM,CAAC;AAChB;;IC5Fa,SAAS,GAAG,OAAO,MAAM,KAAK,YAAY;IAC1C,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE;IAEtB,yBAAyB,GAAG,SAAS;MAC9CA,cAAK,CAAC,eAAe;MACrBA,cAAK,CAAC,UAAU;SAEJ,yBAAyB,CACvC,WAAgB,EAChB,KAAU,EACV,QAAyB;IAEzB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,OAAOA,cAAK,CAAC,aAAa,OAAnBA,cAAK,iBACV,WAAW;YACX,KAAK,GACF,QAAQ,EACU,CAAC;KACzB;SAAM,IAAI,QAAQ,IAAI,UAAU,IAAI,KAAK,EAAE;;;;;;;;QAQ1C,OAAOA,cAAK,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;KAC1D;SAAM;QACL,OAAOA,cAAK,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;KAChD;AACH,CAAC;SAEe,cAAc,CAAC,QAAyB;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;SACpB;aAAM;YACL,OAAOA,cAAK,CAAC,aAAa,OAAnBA,cAAK,iBAAeA,cAAK,CAAC,QAAQ,EAAE,EAAE,GAAK,QAAQ,GAAE;SAC7D;KACF;SAAM;QACL,OAAO,QAAQ,CAAC;KACjB;AACH,CAAC;AAED;;;;SAIgB,YAAY,CAAC,QAAyB;IACpD,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;QAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC;KACnB;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAClC,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;KACvC;SAAM;QACL,OAAO,EAAE,CAAC;KACX;AACH,CAAC;SAEe,WAAW,CAAC,KAAsB;IAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAChE,CAAC;SAEe,YAAY,CAC1B,KAAsB;IAEtB,OAAOA,cAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;SAQe,WAAW,CAAC,CAAM;IAChC,QACE,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAIA,cAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EACzE;AACJ,CAAC;SAee,UAAU,CACxB,KAA0B;IAC1B,mBAAmC;SAAnC,UAAmC,EAAnC,qBAAmC,EAAnC,IAAmC;QAAnC,kCAAmC;;IAEnC,IAAM,MAAM,gBAAQ,KAAK,CAAE,CAAC;IAE5B,KAAmB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE;QAAzB,IAAM,IAAI,kBAAA;QACb,KAAkB,UAAiB,EAAjB,KAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAjB,cAAiB,EAAjB,IAAiB,EAAE;YAAhC,IAAM,GAAG,SAAA;YACZ,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1D;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAI,GAA6B,EAAE,KAAe;IAClE,IAAI,CAAC,GAAG,EAAE;QACR,OAAO;KACR;IAED,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QAC7B,GAAG,CAAC,KAAK,CAAC,CAAC;KACZ;SAAM;QACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxB,GAAwC,CAAC,OAAO,GAAG,KAAK,CAAC;SAC3D;KACF;AACH,CAAC;SAEe,SAAS;IAAI,cAAqC;SAArC,UAAqC,EAArC,qBAAqC,EAArC,IAAqC;QAArC,yBAAqC;;IAChE,OAAO,UAAC,KAAQ;QACd,KAAkB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;YAAnB,IAAM,GAAG,aAAA;YACZ,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACvB;KACF,CAAC;AACJ,CAAC;SAEe,aAAa,CAAC,IAAY,EAAE,IAAS,EAAE,IAAS;IAC9D,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;;QAElC,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,IAAI,IAAI,IAAI,EAAE;;QAEvB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,IAAI,IAAI,IAAI,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,IAAI,KAAK,WAAW,EAAE;;QAE/B,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC/B;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE;;QAE3B,6BAAY,IAAI,GAAK,IAAI,EAAG;KAC7B;SAAM,IAAI,IAAI,KAAK,KAAK,EAAE;;QAEzB,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC9B;SAAM,IAAI,OAAO,IAAI,KAAK,OAAO,IAAI,EAAE;;;QAGtC,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;;QAE9D,OAAO;YAAC,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YACpB,IAAI,GAAQ,CAAC;YACb,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;gBAC9B,GAAG,GAAG,IAAI,eAAI,IAAI,CAAC,CAAC;aACrB;YACD,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;gBAC9B,GAAG,GAAG,IAAI,eAAI,IAAI,CAAC,CAAC;aACrB;YACD,OAAO,GAAG,CAAC;SACZ,CAAC;KACH;SAAM;;QAEL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;SAEe,kBAAkB,CAAC,OAA2B;;IAC5D,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;QACpC,OAAO,OAAO,CAAC,IAAI,CAAC;KACrB;SAAM;QACL,IAAM,IAAI,GAAG,OAAO,CAAC,IAAW,CAAC;QACjC,OAAO,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,mCAAI,IAAI,CAAC,IAAI,mCAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,mCAAI,WAAW,CAAC;KAC1E;AACH;;;;"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { b as __spreadArray, a as __assign } from './tslib.es6-10d3f595.js';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import React__default from 'react';
|
|
4
|
+
|
|
5
|
+
var isBrowser = typeof window !== "undefined";
|
|
6
|
+
var NONE = Symbol("NONE");
|
|
7
|
+
var useIsomorphicLayoutEffect = isBrowser
|
|
8
|
+
? React__default.useLayoutEffect
|
|
9
|
+
: React__default.useEffect;
|
|
10
|
+
function createElementWithChildren(elementType, props, children) {
|
|
11
|
+
if (Array.isArray(children)) {
|
|
12
|
+
return React__default.createElement.apply(React__default, __spreadArray([elementType,
|
|
13
|
+
props], children));
|
|
14
|
+
}
|
|
15
|
+
else if (children || "children" in props) {
|
|
16
|
+
// Only call React.createElement with `children` if there are actual children,
|
|
17
|
+
// or if there was an explicit (albeit undefined) children passed via
|
|
18
|
+
// props. Otherwise, if you pass `undefined` as the children argument
|
|
19
|
+
// to React.createElement, the created element will have prop {children: undefined}.
|
|
20
|
+
// If the `root` is an PlasmicGeneratedComponent, and these props with {children: undefined}
|
|
21
|
+
// are used, then it will be taken as a `children` override, and will thus blank out
|
|
22
|
+
// everything under the root node.
|
|
23
|
+
return React__default.createElement(elementType, props, children);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return React__default.createElement(elementType, props);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function ensureNotArray(children) {
|
|
30
|
+
if (Array.isArray(children)) {
|
|
31
|
+
if (children.length === 1) {
|
|
32
|
+
return children[0];
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return React__default.createElement.apply(React__default, __spreadArray([React__default.Fragment, {}], children));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return children;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Flattens ReactNode into an array of ReactChild, but does NOT replace
|
|
44
|
+
* missing keys with array index, as React.Children.toArray() does.
|
|
45
|
+
*/
|
|
46
|
+
function toChildArray(children) {
|
|
47
|
+
if (isReactChild(children)) {
|
|
48
|
+
return [children];
|
|
49
|
+
}
|
|
50
|
+
else if (Array.isArray(children)) {
|
|
51
|
+
return children.flatMap(toChildArray);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function isReactText(child) {
|
|
58
|
+
return typeof child === "string" || typeof child === "number";
|
|
59
|
+
}
|
|
60
|
+
function isReactChild(child) {
|
|
61
|
+
return React__default.isValidElement(child) || isReactText(child);
|
|
62
|
+
}
|
|
63
|
+
function isReactNode(x) {
|
|
64
|
+
return (typeof x === "string" || typeof x === "number" || React__default.isValidElement(x));
|
|
65
|
+
}
|
|
66
|
+
function mergeProps(props) {
|
|
67
|
+
var restProps = [];
|
|
68
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
69
|
+
restProps[_i - 1] = arguments[_i];
|
|
70
|
+
}
|
|
71
|
+
if (restProps.every(function (rest) { return Object.keys(rest).length === 0; })) {
|
|
72
|
+
return props;
|
|
73
|
+
}
|
|
74
|
+
var result = __assign({}, props);
|
|
75
|
+
for (var _a = 0, restProps_1 = restProps; _a < restProps_1.length; _a++) {
|
|
76
|
+
var rest = restProps_1[_a];
|
|
77
|
+
for (var _b = 0, _c = Object.keys(rest); _b < _c.length; _b++) {
|
|
78
|
+
var key = _c[_b];
|
|
79
|
+
result[key] = mergePropVals(key, result[key], rest[key]);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
function updateRef(ref, value) {
|
|
85
|
+
if (!ref) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (typeof ref === "function") {
|
|
89
|
+
ref(value);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
if (!Object.isFrozen(ref)) {
|
|
93
|
+
ref.current = value;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function mergeRefs() {
|
|
98
|
+
var refs = [];
|
|
99
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
100
|
+
refs[_i] = arguments[_i];
|
|
101
|
+
}
|
|
102
|
+
return function (value) {
|
|
103
|
+
for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) {
|
|
104
|
+
var ref = refs_1[_i];
|
|
105
|
+
updateRef(ref, value);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function mergePropVals(name, val1, val2) {
|
|
110
|
+
if (val1 === NONE || val2 === NONE) {
|
|
111
|
+
// The NONE sentinel always skips all merging and returns null
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
else if (val1 == null) {
|
|
115
|
+
// If either of them is nil, prefer the other
|
|
116
|
+
return val2;
|
|
117
|
+
}
|
|
118
|
+
else if (val2 == null) {
|
|
119
|
+
return val1;
|
|
120
|
+
}
|
|
121
|
+
else if (name === "className") {
|
|
122
|
+
// Special case for className -- always combine both class names
|
|
123
|
+
return classNames(val1, val2);
|
|
124
|
+
}
|
|
125
|
+
else if (name === "style") {
|
|
126
|
+
// Special case for style -- always shallow-merge style dicts
|
|
127
|
+
return __assign(__assign({}, val1), val2);
|
|
128
|
+
}
|
|
129
|
+
else if (name === "ref") {
|
|
130
|
+
// Special case for ref
|
|
131
|
+
return mergeRefs(val1, val2);
|
|
132
|
+
}
|
|
133
|
+
else if (typeof val1 !== typeof val2) {
|
|
134
|
+
// If the type of the two values are different, then no way to merge them.
|
|
135
|
+
// Prefer val2.
|
|
136
|
+
return val2;
|
|
137
|
+
}
|
|
138
|
+
else if (name.startsWith("on") && typeof val1 === "function") {
|
|
139
|
+
// Special case for event handlers -- always call both handlers
|
|
140
|
+
return function () {
|
|
141
|
+
var args = [];
|
|
142
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
143
|
+
args[_i] = arguments[_i];
|
|
144
|
+
}
|
|
145
|
+
var res;
|
|
146
|
+
if (typeof val1 === "function") {
|
|
147
|
+
res = val1.apply(void 0, args);
|
|
148
|
+
}
|
|
149
|
+
if (typeof val2 === "function") {
|
|
150
|
+
res = val2.apply(void 0, args);
|
|
151
|
+
}
|
|
152
|
+
return res;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// For all else, prefer val2
|
|
157
|
+
return val2;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function getElementTypeName(element) {
|
|
161
|
+
var _a, _b, _c, _d;
|
|
162
|
+
if (typeof element.type === "string") {
|
|
163
|
+
return element.type;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
var comp = element.type;
|
|
167
|
+
return (_d = (_b = (_a = comp.displayName) !== null && _a !== void 0 ? _a : comp.name) !== null && _b !== void 0 ? _b : (_c = comp.render) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : "Component";
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export { NONE as N, mergePropVals as a, isBrowser as b, createElementWithChildren as c, mergeRefs as d, ensureNotArray as e, getElementTypeName as g, isReactNode as i, mergeProps as m, toChildArray as t, useIsomorphicLayoutEffect as u };
|
|
172
|
+
//# sourceMappingURL=react-utils-14af9d28.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-utils-14af9d28.js","sources":["../../src/react-utils.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React from \"react\";\n\nexport const isBrowser = typeof window !== \"undefined\";\nexport const NONE = Symbol(\"NONE\");\n\nexport const useIsomorphicLayoutEffect = isBrowser\n ? React.useLayoutEffect\n : React.useEffect;\n\nexport function createElementWithChildren(\n elementType: any,\n props: any,\n children: React.ReactNode\n) {\n if (Array.isArray(children)) {\n return React.createElement(\n elementType,\n props,\n ...children\n ) as React.ReactElement;\n } else if (children || \"children\" in props) {\n // Only call React.createElement with `children` if there are actual children,\n // or if there was an explicit (albeit undefined) children passed via\n // props. Otherwise, if you pass `undefined` as the children argument\n // to React.createElement, the created element will have prop {children: undefined}.\n // If the `root` is an PlasmicGeneratedComponent, and these props with {children: undefined}\n // are used, then it will be taken as a `children` override, and will thus blank out\n // everything under the root node.\n return React.createElement(elementType, props, children);\n } else {\n return React.createElement(elementType, props);\n }\n}\n\nexport function ensureNotArray(children: React.ReactNode) {\n if (Array.isArray(children)) {\n if (children.length === 1) {\n return children[0];\n } else {\n return React.createElement(React.Fragment, {}, ...children);\n }\n } else {\n return children;\n }\n}\n\n/**\n * Flattens ReactNode into an array of ReactChild, but does NOT replace\n * missing keys with array index, as React.Children.toArray() does.\n */\nexport function toChildArray(children: React.ReactNode): React.ReactChild[] {\n if (isReactChild(children)) {\n return [children];\n } else if (Array.isArray(children)) {\n return children.flatMap(toChildArray);\n } else {\n return [];\n }\n}\n\nexport function isReactText(child: React.ReactNode): child is React.ReactText {\n return typeof child === \"string\" || typeof child === \"number\";\n}\n\nexport function isReactChild(\n child: React.ReactNode\n): child is React.ReactChild {\n return React.isValidElement(child) || isReactText(child);\n}\n\nexport function isReactFragment(\n child: React.ReactNode\n): child is React.ReactElement {\n return React.isValidElement(child) && child.type === React.Fragment;\n}\n\nexport function isReactNode(x: any) {\n return (\n typeof x === \"string\" || typeof x === \"number\" || React.isValidElement(x)\n );\n}\n\n// From https://stackoverflow.com/questions/54775790/forcing-excess-property-checking-on-variable-passed-to-typescript-function\nexport type StrictProps<T, TExpected> = Exclude<\n keyof T,\n keyof TExpected\n> extends never\n ? {}\n : \"Unexpected extraneous props\";\n\nexport type HTMLElementRefOf<T extends keyof JSX.IntrinsicElements> = Exclude<\n React.ComponentProps<T>[\"ref\"],\n string\n>;\n\nexport function mergeProps(\n props: Record<string, any>,\n ...restProps: Record<string, any>[]\n): Record<string, any> {\n if (restProps.every((rest) => Object.keys(rest).length === 0)) {\n return props;\n }\n\n const result = { ...props };\n\n for (const rest of restProps) {\n for (const key of Object.keys(rest)) {\n result[key] = mergePropVals(key, result[key], rest[key]);\n }\n }\n\n return result;\n}\n\nfunction updateRef<T>(ref: React.Ref<T> | undefined, value: T | null) {\n if (!ref) {\n return;\n }\n\n if (typeof ref === \"function\") {\n ref(value);\n } else {\n if (!Object.isFrozen(ref)) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n }\n}\n\nexport function mergeRefs<T>(...refs: (React.Ref<T> | undefined)[]) {\n return (value: T) => {\n for (const ref of refs) {\n updateRef(ref, value);\n }\n };\n}\n\nexport function mergePropVals(name: string, val1: any, val2: any): any {\n if (val1 === NONE || val2 === NONE) {\n // The NONE sentinel always skips all merging and returns null\n return null;\n } else if (val1 == null) {\n // If either of them is nil, prefer the other\n return val2;\n } else if (val2 == null) {\n return val1;\n } else if (name === \"className\") {\n // Special case for className -- always combine both class names\n return classNames(val1, val2);\n } else if (name === \"style\") {\n // Special case for style -- always shallow-merge style dicts\n return { ...val1, ...val2 };\n } else if (name === \"ref\") {\n // Special case for ref\n return mergeRefs(val1, val2);\n } else if (typeof val1 !== typeof val2) {\n // If the type of the two values are different, then no way to merge them.\n // Prefer val2.\n return val2;\n } else if (name.startsWith(\"on\") && typeof val1 === \"function\") {\n // Special case for event handlers -- always call both handlers\n return (...args: any[]) => {\n let res: any;\n if (typeof val1 === \"function\") {\n res = val1(...args);\n }\n if (typeof val2 === \"function\") {\n res = val2(...args);\n }\n return res;\n };\n } else {\n // For all else, prefer val2\n return val2;\n }\n}\n\nexport function getElementTypeName(element: React.ReactElement) {\n if (typeof element.type === \"string\") {\n return element.type;\n } else {\n const comp = element.type as any;\n return comp.displayName ?? comp.name ?? comp.render?.name ?? \"Component\";\n }\n}\n"],"names":["React"],"mappings":";;;;IAGa,SAAS,GAAG,OAAO,MAAM,KAAK,YAAY;IAC1C,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE;IAEtB,yBAAyB,GAAG,SAAS;MAC9CA,cAAK,CAAC,eAAe;MACrBA,cAAK,CAAC,UAAU;SAEJ,yBAAyB,CACvC,WAAgB,EAChB,KAAU,EACV,QAAyB;IAEzB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,OAAOA,cAAK,CAAC,aAAa,OAAnBA,cAAK,iBACV,WAAW;YACX,KAAK,GACF,QAAQ,EACU,CAAC;KACzB;SAAM,IAAI,QAAQ,IAAI,UAAU,IAAI,KAAK,EAAE;;;;;;;;QAQ1C,OAAOA,cAAK,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;KAC1D;SAAM;QACL,OAAOA,cAAK,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;KAChD;AACH,CAAC;SAEe,cAAc,CAAC,QAAyB;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;SACpB;aAAM;YACL,OAAOA,cAAK,CAAC,aAAa,OAAnBA,cAAK,iBAAeA,cAAK,CAAC,QAAQ,EAAE,EAAE,GAAK,QAAQ,GAAE;SAC7D;KACF;SAAM;QACL,OAAO,QAAQ,CAAC;KACjB;AACH,CAAC;AAED;;;;SAIgB,YAAY,CAAC,QAAyB;IACpD,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;QAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC;KACnB;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAClC,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;KACvC;SAAM;QACL,OAAO,EAAE,CAAC;KACX;AACH,CAAC;SAEe,WAAW,CAAC,KAAsB;IAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAChE,CAAC;SAEe,YAAY,CAC1B,KAAsB;IAEtB,OAAOA,cAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;SAQe,WAAW,CAAC,CAAM;IAChC,QACE,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAIA,cAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EACzE;AACJ,CAAC;SAee,UAAU,CACxB,KAA0B;IAC1B,mBAAmC;SAAnC,UAAmC,EAAnC,qBAAmC,EAAnC,IAAmC;QAAnC,kCAAmC;;IAEnC,IAAI,SAAS,CAAC,KAAK,CAAC,UAAC,IAAI,IAAK,OAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAA,CAAC,EAAE;QAC7D,OAAO,KAAK,CAAC;KACd;IAED,IAAM,MAAM,gBAAQ,KAAK,CAAE,CAAC;IAE5B,KAAmB,UAAS,EAAT,uBAAS,EAAT,uBAAS,EAAT,IAAS,EAAE;QAAzB,IAAM,IAAI,kBAAA;QACb,KAAkB,UAAiB,EAAjB,KAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAjB,cAAiB,EAAjB,IAAiB,EAAE;YAAhC,IAAM,GAAG,SAAA;YACZ,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1D;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAI,GAA6B,EAAE,KAAe;IAClE,IAAI,CAAC,GAAG,EAAE;QACR,OAAO;KACR;IAED,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QAC7B,GAAG,CAAC,KAAK,CAAC,CAAC;KACZ;SAAM;QACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxB,GAAwC,CAAC,OAAO,GAAG,KAAK,CAAC;SAC3D;KACF;AACH,CAAC;SAEe,SAAS;IAAI,cAAqC;SAArC,UAAqC,EAArC,qBAAqC,EAArC,IAAqC;QAArC,yBAAqC;;IAChE,OAAO,UAAC,KAAQ;QACd,KAAkB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;YAAnB,IAAM,GAAG,aAAA;YACZ,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACvB;KACF,CAAC;AACJ,CAAC;SAEe,aAAa,CAAC,IAAY,EAAE,IAAS,EAAE,IAAS;IAC9D,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;;QAElC,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,IAAI,IAAI,IAAI,EAAE;;QAEvB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,IAAI,IAAI,IAAI,EAAE;QACvB,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,IAAI,KAAK,WAAW,EAAE;;QAE/B,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC/B;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE;;QAE3B,6BAAY,IAAI,GAAK,IAAI,EAAG;KAC7B;SAAM,IAAI,IAAI,KAAK,KAAK,EAAE;;QAEzB,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC9B;SAAM,IAAI,OAAO,IAAI,KAAK,OAAO,IAAI,EAAE;;;QAGtC,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;;QAE9D,OAAO;YAAC,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YACpB,IAAI,GAAQ,CAAC;YACb,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;gBAC9B,GAAG,GAAG,IAAI,eAAI,IAAI,CAAC,CAAC;aACrB;YACD,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;gBAC9B,GAAG,GAAG,IAAI,eAAI,IAAI,CAAC,CAAC;aACrB;YACD,OAAO,GAAG,CAAC;SACZ,CAAC;KACH;SAAM;;QAEL,OAAO,IAAI,CAAC;KACb;AACH,CAAC;SAEe,kBAAkB,CAAC,OAA2B;;IAC5D,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;QACpC,OAAO,OAAO,CAAC,IAAI,CAAC;KACrB;SAAM;QACL,IAAM,IAAI,GAAG,OAAO,CAAC,IAAW,CAAC;QACjC,OAAO,MAAA,MAAA,MAAA,IAAI,CAAC,WAAW,mCAAI,IAAI,CAAC,IAAI,mCAAI,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,mCAAI,WAAW,CAAC;KAC1E;AACH;;;;"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { b as __spreadArray, a as __assign } from './tslib.es6-d26ffe68.js';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import React__default from 'react';
|
|
4
|
+
|
|
5
|
+
var isBrowser = typeof window !== "undefined";
|
|
6
|
+
var NONE = Symbol("NONE");
|
|
7
|
+
var useIsomorphicLayoutEffect = isBrowser
|
|
8
|
+
? React__default.useLayoutEffect
|
|
9
|
+
: React__default.useEffect;
|
|
10
|
+
function createElementWithChildren(elementType, props, children) {
|
|
11
|
+
if (Array.isArray(children)) {
|
|
12
|
+
return React__default.createElement.apply(React__default, __spreadArray([elementType,
|
|
13
|
+
props], children));
|
|
14
|
+
}
|
|
15
|
+
else if (children || "children" in props) {
|
|
16
|
+
// Only call React.createElement with `children` if there are actual children,
|
|
17
|
+
// or if there was an explicit (albeit undefined) children passed via
|
|
18
|
+
// props. Otherwise, if you pass `undefined` as the children argument
|
|
19
|
+
// to React.createElement, the created element will have prop {children: undefined}.
|
|
20
|
+
// If the `root` is an PlasmicGeneratedComponent, and these props with {children: undefined}
|
|
21
|
+
// are used, then it will be taken as a `children` override, and will thus blank out
|
|
22
|
+
// everything under the root node.
|
|
23
|
+
return React__default.createElement(elementType, props, children);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return React__default.createElement(elementType, props);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function ensureNotArray(children) {
|
|
30
|
+
if (Array.isArray(children)) {
|
|
31
|
+
if (children.length === 1) {
|
|
32
|
+
return children[0];
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return React__default.createElement.apply(React__default, __spreadArray([React__default.Fragment, {}], children));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return children;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Flattens ReactNode into an array of ReactChild, but does NOT replace
|
|
44
|
+
* missing keys with array index, as React.Children.toArray() does.
|
|
45
|
+
*/
|
|
46
|
+
function toChildArray(children) {
|
|
47
|
+
if (isReactChild(children)) {
|
|
48
|
+
return [children];
|
|
49
|
+
}
|
|
50
|
+
else if (Array.isArray(children)) {
|
|
51
|
+
return children.flatMap(toChildArray);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function isReactText(child) {
|
|
58
|
+
return typeof child === "string" || typeof child === "number";
|
|
59
|
+
}
|
|
60
|
+
function isReactChild(child) {
|
|
61
|
+
return React__default.isValidElement(child) || isReactText(child);
|
|
62
|
+
}
|
|
63
|
+
function isReactNode(x) {
|
|
64
|
+
return (typeof x === "string" || typeof x === "number" || React__default.isValidElement(x));
|
|
65
|
+
}
|
|
66
|
+
function mergeProps(props) {
|
|
67
|
+
var restProps = [];
|
|
68
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
69
|
+
restProps[_i - 1] = arguments[_i];
|
|
70
|
+
}
|
|
71
|
+
if (restProps.every(function (rest) { return Object.keys(rest).length === 0; })) {
|
|
72
|
+
return props;
|
|
73
|
+
}
|
|
74
|
+
var result = __assign({}, props);
|
|
75
|
+
for (var _a = 0, restProps_1 = restProps; _a < restProps_1.length; _a++) {
|
|
76
|
+
var rest = restProps_1[_a];
|
|
77
|
+
for (var _b = 0, _c = Object.keys(rest); _b < _c.length; _b++) {
|
|
78
|
+
var key = _c[_b];
|
|
79
|
+
result[key] = mergePropVals(key, result[key], rest[key]);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
function updateRef(ref, value) {
|
|
85
|
+
if (!ref) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (typeof ref === "function") {
|
|
89
|
+
ref(value);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
if (!Object.isFrozen(ref)) {
|
|
93
|
+
ref.current = value;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function mergeRefs() {
|
|
98
|
+
var refs = [];
|
|
99
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
100
|
+
refs[_i] = arguments[_i];
|
|
101
|
+
}
|
|
102
|
+
return function (value) {
|
|
103
|
+
for (var _i = 0, refs_1 = refs; _i < refs_1.length; _i++) {
|
|
104
|
+
var ref = refs_1[_i];
|
|
105
|
+
updateRef(ref, value);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function mergePropVals(name, val1, val2) {
|
|
110
|
+
if (val1 === NONE || val2 === NONE) {
|
|
111
|
+
// The NONE sentinel always skips all merging and returns null
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
else if (val1 == null) {
|
|
115
|
+
// If either of them is nil, prefer the other
|
|
116
|
+
return val2;
|
|
117
|
+
}
|
|
118
|
+
else if (val2 == null) {
|
|
119
|
+
return val1;
|
|
120
|
+
}
|
|
121
|
+
else if (name === "className") {
|
|
122
|
+
// Special case for className -- always combine both class names
|
|
123
|
+
return classNames(val1, val2);
|
|
124
|
+
}
|
|
125
|
+
else if (name === "style") {
|
|
126
|
+
// Special case for style -- always shallow-merge style dicts
|
|
127
|
+
return __assign(__assign({}, val1), val2);
|
|
128
|
+
}
|
|
129
|
+
else if (name === "ref") {
|
|
130
|
+
// Special case for ref
|
|
131
|
+
return mergeRefs(val1, val2);
|
|
132
|
+
}
|
|
133
|
+
else if (typeof val1 !== typeof val2) {
|
|
134
|
+
// If the type of the two values are different, then no way to merge them.
|
|
135
|
+
// Prefer val2.
|
|
136
|
+
return val2;
|
|
137
|
+
}
|
|
138
|
+
else if (name.startsWith("on") && typeof val1 === "function") {
|
|
139
|
+
// Special case for event handlers -- always call both handlers
|
|
140
|
+
return function () {
|
|
141
|
+
var args = [];
|
|
142
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
143
|
+
args[_i] = arguments[_i];
|
|
144
|
+
}
|
|
145
|
+
var res;
|
|
146
|
+
if (typeof val1 === "function") {
|
|
147
|
+
res = val1.apply(void 0, args);
|
|
148
|
+
}
|
|
149
|
+
if (typeof val2 === "function") {
|
|
150
|
+
res = val2.apply(void 0, args);
|
|
151
|
+
}
|
|
152
|
+
return res;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// For all else, prefer val2
|
|
157
|
+
return val2;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function getElementTypeName(element) {
|
|
161
|
+
var _a, _b, _c, _d;
|
|
162
|
+
if (typeof element.type === "string") {
|
|
163
|
+
return element.type;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
var comp = element.type;
|
|
167
|
+
return (_d = (_b = (_a = comp.displayName) !== null && _a !== void 0 ? _a : comp.name) !== null && _b !== void 0 ? _b : (_c = comp.render) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : "Component";
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export { NONE as N, mergePropVals as a, isBrowser as b, createElementWithChildren as c, mergeRefs as d, ensureNotArray as e, getElementTypeName as g, isReactNode as i, mergeProps as m, toChildArray as t, useIsomorphicLayoutEffect as u };
|
|
172
|
+
//# sourceMappingURL=react-utils-7c01e440.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-utils-7c01e440.js","sources":["../../src/react-utils.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React from \"react\";\n\nexport const isBrowser = typeof window !== \"undefined\";\nexport const NONE = Symbol(\"NONE\");\n\nexport const useIsomorphicLayoutEffect = isBrowser\n ? React.useLayoutEffect\n : React.useEffect;\n\nexport function createElementWithChildren(\n elementType: any,\n props: any,\n children: React.ReactNode\n) {\n if (Array.isArray(children)) {\n return React.createElement(\n elementType,\n props,\n ...children\n ) as React.ReactElement;\n } else if (children || \"children\" in props) {\n // Only call React.createElement with `children` if there are actual children,\n // or if there was an explicit (albeit undefined) children passed via\n // props. Otherwise, if you pass `undefined` as the children argument\n // to React.createElement, the created element will have prop {children: undefined}.\n // If the `root` is an PlasmicGeneratedComponent, and these props with {children: undefined}\n // are used, then it will be taken as a `children` override, and will thus blank out\n // everything under the root node.\n return React.createElement(elementType, props, children);\n } else {\n return React.createElement(elementType, props);\n }\n}\n\nexport function ensureNotArray(children: React.ReactNode) {\n if (Array.isArray(children)) {\n if (children.length === 1) {\n return children[0];\n } else {\n return React.createElement(React.Fragment, {}, ...children);\n }\n } else {\n return children;\n }\n}\n\n/**\n * Flattens ReactNode into an array of ReactChild, but does NOT replace\n * missing keys with array index, as React.Children.toArray() does.\n */\nexport function toChildArray(children: React.ReactNode): React.ReactChild[] {\n if (isReactChild(children)) {\n return [children];\n } else if (Array.isArray(children)) {\n return children.flatMap(toChildArray);\n } else {\n return [];\n }\n}\n\nexport function isReactText(child: React.ReactNode): child is React.ReactText {\n return typeof child === \"string\" || typeof child === \"number\";\n}\n\nexport function isReactChild(\n child: React.ReactNode\n): child is React.ReactChild {\n return React.isValidElement(child) || isReactText(child);\n}\n\nexport function isReactFragment(\n child: React.ReactNode\n): child is React.ReactElement {\n return React.isValidElement(child) && child.type === React.Fragment;\n}\n\nexport function isReactNode(x: any) {\n return (\n typeof x === \"string\" || typeof x === \"number\" || React.isValidElement(x)\n );\n}\n\n// From https://stackoverflow.com/questions/54775790/forcing-excess-property-checking-on-variable-passed-to-typescript-function\nexport type StrictProps<T, TExpected> = Exclude<\n keyof T,\n keyof TExpected\n> extends never\n ? {}\n : \"Unexpected extraneous props\";\n\nexport type HTMLElementRefOf<T extends keyof JSX.IntrinsicElements> = Exclude<\n React.ComponentProps<T>[\"ref\"],\n string\n>;\n\nexport function mergeProps(\n props: Record<string, any>,\n ...restProps: Record<string, any>[]\n): Record<string, any> {\n if (restProps.every((rest) => Object.keys(rest).length === 0)) {\n return props;\n }\n\n const result = { ...props };\n\n for (const rest of restProps) {\n for (const key of Object.keys(rest)) {\n result[key] = mergePropVals(key, result[key], rest[key]);\n }\n }\n\n return result;\n}\n\nfunction updateRef<T>(ref: React.Ref<T> | undefined, value: T | null) {\n if (!ref) {\n return;\n }\n\n if (typeof ref === \"function\") {\n ref(value);\n } else {\n if (!Object.isFrozen(ref)) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n }\n}\n\nexport function mergeRefs<T>(...refs: (React.Ref<T> | undefined)[]) {\n return (value: T) => {\n for (const ref of refs) {\n updateRef(ref, value);\n }\n };\n}\n\nexport function mergePropVals(name: string, val1: any, val2: any): any {\n if (val1 === NONE || val2 === NONE) {\n // The NONE sentinel always skips all merging and returns null\n return null;\n } else if (val1 == null) {\n // If either of them is nil, prefer the other\n return val2;\n } else if (val2 == null) {\n return val1;\n } else if (name === \"className\") {\n // Special case for className -- always combine both class names\n return classNames(val1, val2);\n } else if (name === \"style\") {\n // Special case for style -- always shallow-merge style dicts\n return { ...val1, ...val2 };\n } else if (name === \"ref\") {\n // Special case for ref\n return mergeRefs(val1, val2);\n } else if (typeof val1 !== typeof val2) {\n // If the type of the two values are different, then no way to merge them.\n // Prefer val2.\n return val2;\n } else if (name.startsWith(\"on\") && typeof val1 === \"function\") {\n // Special case for event handlers -- always call both handlers\n return (...args: any[]) => {\n let res: any;\n if (typeof val1 === \"function\") {\n res = val1(...args);\n }\n if (typeof val2 === \"function\") {\n res = val2(...args);\n }\n return res;\n };\n } else {\n // For all else, prefer val2\n return val2;\n }\n}\n\nexport function getElementTypeName(element: React.ReactElement) {\n if (typeof element.type === \"string\") {\n return element.type;\n } else {\n const comp = element.type as any;\n return comp.displayName ?? comp.name ?? comp.render?.name ?? \"Component\";\n }\n}\n"],"names":["React"],"mappings":"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"}
|