@fuaran-ui/ops 0.2.0 → 0.3.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.cjs +91 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +92 -7
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defaults, projectSelectionField, controlValueDefaults } from '@fuaran-ui/schema';
|
|
1
|
+
import { FORM_FIELD_KIND_NAMES, NODE_KIND_GROUPS, defaults, projectSelectionField, controlValueDefaults } from '@fuaran-ui/schema';
|
|
2
2
|
|
|
3
3
|
// src/encode.ts
|
|
4
4
|
var assertNever = (x) => {
|
|
@@ -935,6 +935,25 @@ var formFieldKind = (autoBind, k) => {
|
|
|
935
935
|
if (k.constraints.step !== void 0) fields.push(["step", num(k.constraints.step)]);
|
|
936
936
|
return caseObj("Date", fields);
|
|
937
937
|
}
|
|
938
|
+
case "DateRange": {
|
|
939
|
+
const staticPair = (p) => jObject([
|
|
940
|
+
["from", str(p[0])],
|
|
941
|
+
["to", str(p[1])]
|
|
942
|
+
]);
|
|
943
|
+
const fields = [
|
|
944
|
+
...handlerField("onChange", k.onChange),
|
|
945
|
+
...valueField(
|
|
946
|
+
k.value,
|
|
947
|
+
controlValueDefaults.dateRange,
|
|
948
|
+
(v) => v.kind === "Static" ? staticPair(v.value) : binding(v, staticPair)
|
|
949
|
+
),
|
|
950
|
+
["variant", str(k.variant)]
|
|
951
|
+
];
|
|
952
|
+
if (k.constraints.min !== void 0) fields.push(["min", str(k.constraints.min)]);
|
|
953
|
+
if (k.constraints.max !== void 0) fields.push(["max", str(k.constraints.max)]);
|
|
954
|
+
if (k.constraints.step !== void 0) fields.push(["step", num(k.constraints.step)]);
|
|
955
|
+
return caseObj("DateRange", fields);
|
|
956
|
+
}
|
|
938
957
|
default:
|
|
939
958
|
return assertNever(k);
|
|
940
959
|
}
|
|
@@ -4337,6 +4356,41 @@ var decodeBindingFloatPair = (p, j) => {
|
|
|
4337
4356
|
}
|
|
4338
4357
|
return decodeBinding(p, j, parseStaticFloatPair, [0, 0]);
|
|
4339
4358
|
};
|
|
4359
|
+
var parseStaticStringPair = (p, v) => {
|
|
4360
|
+
const ordered = (a, b) => a > b ? makeError(
|
|
4361
|
+
"WRONG_TYPE",
|
|
4362
|
+
p,
|
|
4363
|
+
`date-range start '${a}' is after end '${b}' \u2014 a DateRange pair is ordered (from <= to); ISO-8601 strings of one variant compare lexicographically, so swap the two values`,
|
|
4364
|
+
'ordered ISO-8601 pair ({"from": <iso>, "to": <iso>} with from <= to)'
|
|
4365
|
+
) : ok([a, b]);
|
|
4366
|
+
if (v.kind === "JObject") {
|
|
4367
|
+
const from = v.fields.get("from");
|
|
4368
|
+
const to = v.fields.get("to");
|
|
4369
|
+
if (from !== void 0 && to !== void 0) {
|
|
4370
|
+
const a = requireString(`${p}.from`, from);
|
|
4371
|
+
if (!a.ok) return a;
|
|
4372
|
+
const b = requireString(`${p}.to`, to);
|
|
4373
|
+
if (!b.ok) return b;
|
|
4374
|
+
return ordered(a.value, b.value);
|
|
4375
|
+
}
|
|
4376
|
+
return wrongType(p, "object with from and to ISO-8601 strings");
|
|
4377
|
+
}
|
|
4378
|
+
if (v.kind === "JArray" && v.items.length === 2) {
|
|
4379
|
+
const a = requireString(`${p}[0]`, v.items[0]);
|
|
4380
|
+
if (!a.ok) return a;
|
|
4381
|
+
const b = requireString(`${p}[1]`, v.items[1]);
|
|
4382
|
+
if (!b.ok) return b;
|
|
4383
|
+
return ordered(a.value, b.value);
|
|
4384
|
+
}
|
|
4385
|
+
return wrongType(p, "date-range pair ({from, to} object or [from, to] array)");
|
|
4386
|
+
};
|
|
4387
|
+
var decodeBindingStringPair = (p, j) => {
|
|
4388
|
+
if (j.kind === "JObject" && j.fields.get("$type") === void 0 && j.fields.get("from") !== void 0 && j.fields.get("to") !== void 0) {
|
|
4389
|
+
const parsed = parseStaticStringPair(p, j);
|
|
4390
|
+
return parsed.ok ? ok({ kind: "Static", value: parsed.value }) : parsed;
|
|
4391
|
+
}
|
|
4392
|
+
return decodeBinding(p, j, parseStaticStringPair, ["", ""]);
|
|
4393
|
+
};
|
|
4340
4394
|
var parseStaticStringList = (p, v) => {
|
|
4341
4395
|
if (v.kind === "JNull") return ok([]);
|
|
4342
4396
|
if (v.kind === "JString" && v.value === OPAQUE2) return ok([OPAQUE2]);
|
|
@@ -5184,6 +5238,7 @@ var decodeDisplayKind = (path, j) => {
|
|
|
5184
5238
|
);
|
|
5185
5239
|
}
|
|
5186
5240
|
};
|
|
5241
|
+
var WRONG_FORM_FIELD_KIND_HINT = FORM_FIELD_KIND_NAMES.join(" | ");
|
|
5187
5242
|
var decodeFormFieldKind = (autoBind, path, j) => {
|
|
5188
5243
|
const fo = requireObject(path, j);
|
|
5189
5244
|
if (!fo.ok) return fo;
|
|
@@ -5333,12 +5388,35 @@ var decodeFormFieldKind = (autoBind, path, j) => {
|
|
|
5333
5388
|
}
|
|
5334
5389
|
});
|
|
5335
5390
|
}
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
"
|
|
5391
|
+
case "DateRange": {
|
|
5392
|
+
const value = valueOr(
|
|
5393
|
+
decodeBindingStringPair,
|
|
5394
|
+
controlValueDefaults.dateRange,
|
|
5395
|
+
"Binding<[from, to]> ISO-8601 pair value"
|
|
5341
5396
|
);
|
|
5397
|
+
if (!value.ok) return value;
|
|
5398
|
+
const variant = reqField(path, f, "variant", "DateVariant", decodeDateVariant);
|
|
5399
|
+
if (!variant.ok) return variant;
|
|
5400
|
+
const min = optField(path, f, "min", requireString);
|
|
5401
|
+
if (!min.ok) return min;
|
|
5402
|
+
const max = optField(path, f, "max", requireString);
|
|
5403
|
+
if (!max.ok) return max;
|
|
5404
|
+
const step = optField(path, f, "step", requireFloat);
|
|
5405
|
+
if (!step.ok) return step;
|
|
5406
|
+
return ok({
|
|
5407
|
+
kind: "DateRange",
|
|
5408
|
+
value: value.value,
|
|
5409
|
+
...onChangeField,
|
|
5410
|
+
variant: variant.value,
|
|
5411
|
+
constraints: {
|
|
5412
|
+
...min.value !== void 0 ? { min: min.value } : {},
|
|
5413
|
+
...max.value !== void 0 ? { max: max.value } : {},
|
|
5414
|
+
...step.value !== void 0 ? { step: step.value } : {}
|
|
5415
|
+
}
|
|
5416
|
+
});
|
|
5417
|
+
}
|
|
5418
|
+
default:
|
|
5419
|
+
return unknownDuCase(path, d.value, WRONG_FORM_FIELD_KIND_HINT);
|
|
5342
5420
|
}
|
|
5343
5421
|
};
|
|
5344
5422
|
var decodeFormField = (path, j) => {
|
|
@@ -6300,6 +6378,13 @@ var decodeEffectClass = (path, j) => {
|
|
|
6300
6378
|
);
|
|
6301
6379
|
return ok({ hostEffect: host.value, determinism: det.value });
|
|
6302
6380
|
};
|
|
6381
|
+
var WRONG_NODE_KIND_HINT = (() => {
|
|
6382
|
+
const primitives = NODE_KIND_GROUPS.filter((g) => g.label !== "Structural").map(
|
|
6383
|
+
(g) => `${"AEIOU".includes(g.label[0]) ? "an" : "a"} ${g.label} primitive (${g.kinds.join(" | ")})`
|
|
6384
|
+
).join(", ");
|
|
6385
|
+
const structural = NODE_KIND_GROUPS.find((g) => g.label === "Structural")?.kinds ?? [];
|
|
6386
|
+
return `${primitives}, or ${structural.join(" | ")}`;
|
|
6387
|
+
})();
|
|
6303
6388
|
var decodeNodeKind = (path, j) => {
|
|
6304
6389
|
const fo = requireObject(path, j);
|
|
6305
6390
|
if (!fo.ok) return fo;
|
|
@@ -6554,7 +6639,7 @@ var decodeNodeKind = (path, j) => {
|
|
|
6554
6639
|
"WRONG_NODE_KIND",
|
|
6555
6640
|
`${path}.$type`,
|
|
6556
6641
|
`unknown NodeKind discriminator '${d.value}'`,
|
|
6557
|
-
|
|
6642
|
+
WRONG_NODE_KIND_HINT
|
|
6558
6643
|
);
|
|
6559
6644
|
}
|
|
6560
6645
|
};
|