attaform 0.20.1 → 0.20.2
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/README.md +1 -1
- package/dist/chunks/devtools.cjs +2 -2
- package/dist/chunks/devtools.cjs.map +1 -1
- package/dist/chunks/devtools.mjs +2 -2
- package/dist/chunks/devtools.mjs.map +1 -1
- package/dist/chunks/indexeddb.cjs +1 -1
- package/dist/chunks/indexeddb.mjs +1 -1
- package/dist/chunks/local-storage.cjs +1 -1
- package/dist/chunks/local-storage.mjs +1 -1
- package/dist/chunks/session-storage.cjs +1 -1
- package/dist/chunks/session-storage.mjs +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.d.cts +4 -4
- package/dist/index.d.mts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.mjs +5 -5
- package/dist/nuxt.d.cts +1 -1
- package/dist/nuxt.d.mts +1 -1
- package/dist/nuxt.d.ts +1 -1
- package/dist/runtime/plugins/attaform.cjs +2 -2
- package/dist/runtime/plugins/attaform.mjs +2 -2
- package/dist/shared/{attaform.SfhU0OEY.d.cts → attaform.99cfHcIt.d.cts} +26 -9
- package/dist/shared/{attaform.SfhU0OEY.d.mts → attaform.99cfHcIt.d.mts} +26 -9
- package/dist/shared/{attaform.SfhU0OEY.d.ts → attaform.99cfHcIt.d.ts} +26 -9
- package/dist/shared/{attaform.tVkmQh5w.mjs → attaform.BGk8cfw2.mjs} +3 -3
- package/dist/shared/{attaform.tVkmQh5w.mjs.map → attaform.BGk8cfw2.mjs.map} +1 -1
- package/dist/shared/{attaform.GbDo_lJi.d.cts → attaform.BXinSW2T.d.mts} +1 -1
- package/dist/shared/{attaform.DHRWn-cu.cjs → attaform.B_hph5AE.cjs} +3 -3
- package/dist/shared/{attaform.DHRWn-cu.cjs.map → attaform.B_hph5AE.cjs.map} +1 -1
- package/dist/shared/{attaform.iWo9soNX.mjs → attaform.C5aYC_T8.mjs} +4 -4
- package/dist/shared/{attaform.iWo9soNX.mjs.map → attaform.C5aYC_T8.mjs.map} +1 -1
- package/dist/shared/{attaform.BrrXNmfK.cjs → attaform.Cd4AOfwu.cjs} +4 -4
- package/dist/shared/{attaform.BrrXNmfK.cjs.map → attaform.Cd4AOfwu.cjs.map} +1 -1
- package/dist/shared/{attaform.EZG6fOFb.mjs → attaform.CnrxbkB6.mjs} +2 -2
- package/dist/shared/{attaform.EZG6fOFb.mjs.map → attaform.CnrxbkB6.mjs.map} +1 -1
- package/dist/shared/{attaform.DLnE5bZa.cjs → attaform.CwLjUqmQ.cjs} +7 -3
- package/dist/shared/attaform.CwLjUqmQ.cjs.map +1 -0
- package/dist/shared/{attaform.DoKXru-a.d.mts → attaform.CywE4y8x.d.cts} +1 -1
- package/dist/shared/{attaform.BPxsYtTe.cjs → attaform.D2SCCd4O.cjs} +2 -2
- package/dist/shared/{attaform.BPxsYtTe.cjs.map → attaform.D2SCCd4O.cjs.map} +1 -1
- package/dist/shared/{attaform.BCBxTyMC.cjs → attaform.DAKrGhxc.cjs} +4 -4
- package/dist/shared/{attaform.BCBxTyMC.cjs.map → attaform.DAKrGhxc.cjs.map} +1 -1
- package/dist/shared/{attaform.Dl5kDY-A.d.ts → attaform.DN5CvZrg.d.ts} +1 -1
- package/dist/shared/{attaform.D5-1XGQU.d.cts → attaform.DbRgDFa7.d.cts} +1 -1
- package/dist/shared/{attaform.D6CwqkPx.mjs → attaform.Dt7dEcHk.mjs} +4 -4
- package/dist/shared/{attaform.D6CwqkPx.mjs.map → attaform.Dt7dEcHk.mjs.map} +1 -1
- package/dist/shared/{attaform.BKozEdTr.mjs → attaform.QG5TG8lB.mjs} +51 -35
- package/dist/shared/attaform.QG5TG8lB.mjs.map +1 -0
- package/dist/shared/{attaform.EMzJcQci.d.mts → attaform.ceGEAEMk.d.ts} +1 -1
- package/dist/shared/{attaform.Bh3ACtts.d.ts → attaform.sWm8B15V.d.mts} +1 -1
- package/dist/shared/{attaform.BqZuwLTK.mjs → attaform.tiWEVznj.mjs} +7 -3
- package/dist/shared/attaform.tiWEVznj.mjs.map +1 -0
- package/dist/shared/{attaform.BPy-4qRx.cjs → attaform.z5j3LwJz.cjs} +51 -34
- package/dist/shared/attaform.z5j3LwJz.cjs.map +1 -0
- package/dist/zod-v3.cjs +3 -3
- package/dist/zod-v3.d.cts +3 -3
- package/dist/zod-v3.d.mts +3 -3
- package/dist/zod-v3.d.ts +3 -3
- package/dist/zod-v3.mjs +3 -3
- package/dist/zod-v4.cjs +3 -3
- package/dist/zod-v4.d.cts +4 -4
- package/dist/zod-v4.d.mts +4 -4
- package/dist/zod-v4.d.ts +4 -4
- package/dist/zod-v4.mjs +3 -3
- package/dist/zod.cjs +5 -5
- package/dist/zod.d.cts +5 -5
- package/dist/zod.d.mts +5 -5
- package/dist/zod.d.ts +5 -5
- package/dist/zod.mjs +6 -6
- package/package.json +3 -3
- package/dist/shared/attaform.BKozEdTr.mjs.map +0 -1
- package/dist/shared/attaform.BPy-4qRx.cjs.map +0 -1
- package/dist/shared/attaform.BqZuwLTK.mjs.map +0 -1
- package/dist/shared/attaform.DLnE5bZa.cjs.map +0 -1
|
@@ -832,12 +832,8 @@ function syncElementRegistration(el, value, oldValue) {
|
|
|
832
832
|
const wasRegistered = isRegisterValue(oldValue);
|
|
833
833
|
const isRegistered = isRegisterValue(value);
|
|
834
834
|
if (!wasRegistered && !isRegistered) return;
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
const next = value;
|
|
838
|
-
if (old.path === next.path && old.persistOptIns === next.persistOptIns) return;
|
|
839
|
-
}
|
|
840
|
-
if (wasRegistered) {
|
|
835
|
+
const samePathAndStore = wasRegistered && isRegistered && oldValue.path === value.path && oldValue.persistOptIns === value.persistOptIns;
|
|
836
|
+
if (wasRegistered && !samePathAndStore) {
|
|
841
837
|
oldValue.deregisterElement(el);
|
|
842
838
|
}
|
|
843
839
|
if (isRegistered) {
|
|
@@ -861,14 +857,28 @@ function isRegisterValue(val) {
|
|
|
861
857
|
function writeLastTypedForm(rv, next) {
|
|
862
858
|
rv.lastTypedForm.value = next;
|
|
863
859
|
}
|
|
864
|
-
function computePersistMeta(el, registerValue) {
|
|
865
|
-
const elementId = getOrAssignElementId(el);
|
|
866
|
-
return { persist: registerValue.persistOptIns.hasOptIn(elementId, registerValue.path) };
|
|
867
|
-
}
|
|
868
860
|
const DEFAULT_ASSIGNER_TAG = Symbol.for("attaform:default-assigner-tag");
|
|
869
861
|
function isDefaultAssigner(fn) {
|
|
870
862
|
return typeof fn === "function" && fn[DEFAULT_ASSIGNER_TAG] === true;
|
|
871
863
|
}
|
|
864
|
+
const CONSUMER_WRAPPED_TAG = Symbol.for("attaform:consumer-wrapped-assigner");
|
|
865
|
+
function isConsumerWrapped(fn) {
|
|
866
|
+
return typeof fn === "function" && fn[CONSUMER_WRAPPED_TAG] === true;
|
|
867
|
+
}
|
|
868
|
+
function fireAssigner(el, registerValue, value) {
|
|
869
|
+
const fn = el[assignKey];
|
|
870
|
+
if (fn === void 0) return void 0;
|
|
871
|
+
if (isDefaultAssigner(fn) || isConsumerWrapped(fn)) {
|
|
872
|
+
return fn(value);
|
|
873
|
+
}
|
|
874
|
+
if (!isRegisterValue(registerValue)) {
|
|
875
|
+
return fn(value, void 0);
|
|
876
|
+
}
|
|
877
|
+
const r = runTransforms(value, registerValue);
|
|
878
|
+
if (!r.ok) return false;
|
|
879
|
+
const coerced = applyCoerce(r.value, registerValue);
|
|
880
|
+
return fn(coerced, registerValue);
|
|
881
|
+
}
|
|
872
882
|
function shouldBailListener(el) {
|
|
873
883
|
if (INTERACTIVE_TAG_NAMES.has(el.tagName)) return false;
|
|
874
884
|
return isDefaultAssigner(el[assignKey]);
|
|
@@ -924,38 +934,39 @@ function logTransformAsync(path) {
|
|
|
924
934
|
);
|
|
925
935
|
}
|
|
926
936
|
}
|
|
927
|
-
const getModelAssigner = (
|
|
937
|
+
const getModelAssigner = (vnode, registerValue) => {
|
|
928
938
|
const fn = vnode.props?.["onUpdate:registerValue"] ?? vnode.props?.["on:update:registerValue"];
|
|
929
939
|
if (isArray(fn)) {
|
|
930
940
|
const fnArr = fn.filter((x) => isFunction(x));
|
|
931
|
-
|
|
941
|
+
const wrapped = (value) => {
|
|
932
942
|
const r = runTransforms(value, registerValue);
|
|
933
943
|
if (!r.ok) return false;
|
|
934
944
|
const coerced = applyCoerce(r.value, registerValue);
|
|
935
945
|
invokeArrayFns(fnArr, coerced, registerValue);
|
|
936
946
|
return void 0;
|
|
937
947
|
};
|
|
948
|
+
wrapped[CONSUMER_WRAPPED_TAG] = true;
|
|
949
|
+
return wrapped;
|
|
938
950
|
}
|
|
939
951
|
if (isFunction(fn)) {
|
|
940
952
|
const handler = fn;
|
|
941
|
-
|
|
953
|
+
const wrapped = (value) => {
|
|
942
954
|
const r = runTransforms(value, registerValue);
|
|
943
955
|
if (!r.ok) return false;
|
|
944
956
|
const coerced = applyCoerce(r.value, registerValue);
|
|
945
957
|
return handler(coerced, registerValue);
|
|
946
958
|
};
|
|
959
|
+
wrapped[CONSUMER_WRAPPED_TAG] = true;
|
|
960
|
+
return wrapped;
|
|
947
961
|
}
|
|
948
962
|
const defaultAssigner = (value) => {
|
|
949
963
|
if (value === void 0 && registerValue.acceptsUndefined) {
|
|
950
|
-
return registerValue.setValueWithInternalPath(
|
|
951
|
-
void 0,
|
|
952
|
-
computePersistMeta(el, registerValue)
|
|
953
|
-
);
|
|
964
|
+
return registerValue.setValueWithInternalPath(void 0);
|
|
954
965
|
}
|
|
955
966
|
const r = runTransforms(value, registerValue);
|
|
956
967
|
if (!r.ok) return false;
|
|
957
968
|
const coerced = applyCoerce(r.value, registerValue);
|
|
958
|
-
return registerValue.setValueWithInternalPath(coerced
|
|
969
|
+
return registerValue.setValueWithInternalPath(coerced);
|
|
959
970
|
};
|
|
960
971
|
defaultAssigner[DEFAULT_ASSIGNER_TAG] = true;
|
|
961
972
|
return defaultAssigner;
|
|
@@ -978,7 +989,8 @@ function makeNoopAssigner() {
|
|
|
978
989
|
return noop;
|
|
979
990
|
}
|
|
980
991
|
function setAssignFunction(el, vnode, value) {
|
|
981
|
-
|
|
992
|
+
const current = el[assignKey];
|
|
993
|
+
if (current !== void 0 && !isDefaultAssigner(current) && !isConsumerWrapped(current)) {
|
|
982
994
|
return;
|
|
983
995
|
}
|
|
984
996
|
if (value === void 0) {
|
|
@@ -992,11 +1004,12 @@ function setAssignFunction(el, vnode, value) {
|
|
|
992
1004
|
el[assignKey] = makeNoopAssigner();
|
|
993
1005
|
return;
|
|
994
1006
|
}
|
|
995
|
-
el[assignKey] = getModelAssigner(
|
|
1007
|
+
el[assignKey] = getModelAssigner(vnode, value);
|
|
996
1008
|
}
|
|
997
1009
|
const vRegisterText = {
|
|
998
1010
|
created(el, { value, modifiers: { lazy, trim, number } }, vnode) {
|
|
999
|
-
const
|
|
1011
|
+
const castToNumberAtCreated = number === true || vnode.props?.["type"] === "number";
|
|
1012
|
+
const liveCastToNumber = () => number === true || el.getAttribute("type") === "number";
|
|
1000
1013
|
if (isRegisterValue(value)) {
|
|
1001
1014
|
value.registerElement(el);
|
|
1002
1015
|
setAssignFunction(el, vnode, value);
|
|
@@ -1006,6 +1019,7 @@ const vRegisterText = {
|
|
|
1006
1019
|
const target = e.target;
|
|
1007
1020
|
if (target === null || target.composing) return;
|
|
1008
1021
|
noteInteraction(value);
|
|
1022
|
+
const castToNumber = liveCastToNumber();
|
|
1009
1023
|
let domValue = el.value;
|
|
1010
1024
|
if (trim === true && lazy === true) {
|
|
1011
1025
|
domValue = domValue.trim();
|
|
@@ -1046,7 +1060,7 @@ const vRegisterText = {
|
|
|
1046
1060
|
return;
|
|
1047
1061
|
}
|
|
1048
1062
|
const commit = domValue === "" && isRegisterValue(value) && value.acceptsUndefined ? void 0 : domValue;
|
|
1049
|
-
el
|
|
1063
|
+
fireAssigner(el, value, commit);
|
|
1050
1064
|
if (isRegisterValue(value) && isDefaultAssigner(el[assignKey])) {
|
|
1051
1065
|
const storage = value.innerRef.value;
|
|
1052
1066
|
if (storage !== domValue) {
|
|
@@ -1056,17 +1070,18 @@ const vRegisterText = {
|
|
|
1056
1070
|
}
|
|
1057
1071
|
}
|
|
1058
1072
|
});
|
|
1059
|
-
if (trim === true ||
|
|
1073
|
+
if (trim === true || castToNumberAtCreated) {
|
|
1060
1074
|
addTrackedListener(el, "change", () => {
|
|
1061
1075
|
if (shouldBailListener(el)) return;
|
|
1062
1076
|
let normalized = el.value;
|
|
1063
1077
|
if (trim === true) normalized = normalized.trim();
|
|
1078
|
+
const castToNumber = liveCastToNumber();
|
|
1064
1079
|
if (castToNumber) {
|
|
1065
1080
|
const cast = looseToNumber(normalized);
|
|
1066
1081
|
if (typeof cast === "number" && Number.isFinite(cast)) {
|
|
1067
1082
|
if (isRegisterValue(value)) writeLastTypedForm(value, null);
|
|
1068
1083
|
el.value = String(cast);
|
|
1069
|
-
if (lazy !== true) el
|
|
1084
|
+
if (lazy !== true) fireAssigner(el, value, cast);
|
|
1070
1085
|
} else {
|
|
1071
1086
|
if (isRegisterValue(value)) {
|
|
1072
1087
|
writeLastTypedForm(value, null);
|
|
@@ -1078,7 +1093,7 @@ const vRegisterText = {
|
|
|
1078
1093
|
}
|
|
1079
1094
|
el.value = typeof normalized === "number" ? String(normalized) : normalized;
|
|
1080
1095
|
if (trim === true && lazy !== true) {
|
|
1081
|
-
el
|
|
1096
|
+
fireAssigner(el, value, normalized);
|
|
1082
1097
|
}
|
|
1083
1098
|
});
|
|
1084
1099
|
}
|
|
@@ -1142,7 +1157,6 @@ const vRegisterCheckbox = {
|
|
|
1142
1157
|
const explicitValueRequired = true;
|
|
1143
1158
|
const rawElementValue = getValue(el, explicitValueRequired);
|
|
1144
1159
|
const checked = el.checked;
|
|
1145
|
-
const assign = el[assignKey];
|
|
1146
1160
|
if (isArray(modelValue)) {
|
|
1147
1161
|
if (rawElementValue === void 0) {
|
|
1148
1162
|
vue.warn(
|
|
@@ -1154,11 +1168,11 @@ const vRegisterCheckbox = {
|
|
|
1154
1168
|
const index = looseIndexOf(modelValue, elementValue);
|
|
1155
1169
|
const found = index !== -1;
|
|
1156
1170
|
if (checked && !found) {
|
|
1157
|
-
|
|
1171
|
+
fireAssigner(el, value, modelValue.concat(elementValue));
|
|
1158
1172
|
} else if (!checked && found) {
|
|
1159
1173
|
const filtered = [...modelValue];
|
|
1160
1174
|
filtered.splice(index, 1);
|
|
1161
|
-
|
|
1175
|
+
fireAssigner(el, value, filtered);
|
|
1162
1176
|
}
|
|
1163
1177
|
} else if (isSet(modelValue)) {
|
|
1164
1178
|
if (rawElementValue === void 0) {
|
|
@@ -1174,9 +1188,9 @@ const vRegisterCheckbox = {
|
|
|
1174
1188
|
} else {
|
|
1175
1189
|
cloned.delete(elementValue);
|
|
1176
1190
|
}
|
|
1177
|
-
|
|
1191
|
+
fireAssigner(el, value, cloned);
|
|
1178
1192
|
} else {
|
|
1179
|
-
|
|
1193
|
+
fireAssigner(el, value, getCheckboxValue(el, checked));
|
|
1180
1194
|
}
|
|
1181
1195
|
if (isRegisterValue(value) && isDefaultAssigner(el[assignKey])) {
|
|
1182
1196
|
setChecked(el, value);
|
|
@@ -1236,7 +1250,7 @@ const vRegisterRadio = {
|
|
|
1236
1250
|
addTrackedListener(el, "change", () => {
|
|
1237
1251
|
if (shouldBailListener(el)) return;
|
|
1238
1252
|
noteInteraction(value);
|
|
1239
|
-
el
|
|
1253
|
+
fireAssigner(el, value, getValue(el));
|
|
1240
1254
|
if (isRegisterValue(value) && isDefaultAssigner(el[assignKey])) {
|
|
1241
1255
|
const currentModel = value.innerRef.value;
|
|
1242
1256
|
const target = looseEqual(currentModel, applyCoerce(getValue(el), value));
|
|
@@ -1281,12 +1295,14 @@ const vRegisterSelect = {
|
|
|
1281
1295
|
created(el, { value, modifiers: { number } }, vnode) {
|
|
1282
1296
|
if (!isRegisterValue(value)) return;
|
|
1283
1297
|
value.registerElement(el);
|
|
1284
|
-
const isSetModel = isSet(value.innerRef.value);
|
|
1285
1298
|
addTrackedListener(el, "change", () => {
|
|
1286
1299
|
if (shouldBailListener(el)) return;
|
|
1287
1300
|
noteInteraction(value);
|
|
1301
|
+
const isSetModel = isSet(value.innerRef.value);
|
|
1288
1302
|
const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map((o) => number === true ? looseToNumber(getValue(o)) : getValue(o));
|
|
1289
|
-
const wrote =
|
|
1303
|
+
const wrote = fireAssigner(
|
|
1304
|
+
el,
|
|
1305
|
+
value,
|
|
1290
1306
|
el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]
|
|
1291
1307
|
);
|
|
1292
1308
|
if (wrote !== false) {
|
|
@@ -1658,6 +1674,7 @@ exports.createIsSensitivePath = createIsSensitivePath;
|
|
|
1658
1674
|
exports.createPersistOptInRegistry = createPersistOptInRegistry;
|
|
1659
1675
|
exports.createRegistry = createRegistry;
|
|
1660
1676
|
exports.ensureAttaformInstalled = ensureAttaformInstalled;
|
|
1677
|
+
exports.getOrAssignElementId = getOrAssignElementId;
|
|
1661
1678
|
exports.getRegistryFromApp = getRegistryFromApp;
|
|
1662
1679
|
exports.isPathPrefix = isPathPrefix;
|
|
1663
1680
|
exports.isRegisterValue = isRegisterValue;
|
|
@@ -1673,4 +1690,4 @@ exports.segmentsForPathKey = segmentsForPathKey;
|
|
|
1673
1690
|
exports.useRegister = useRegister;
|
|
1674
1691
|
exports.useRegistry = useRegistry;
|
|
1675
1692
|
exports.vRegister = vRegister;
|
|
1676
|
-
//# sourceMappingURL=attaform.
|
|
1693
|
+
//# sourceMappingURL=attaform.z5j3LwJz.cjs.map
|