attaform 0.24.3 → 0.24.4

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.
Files changed (77) hide show
  1. package/dist/chunks/devtools.cjs +1 -1
  2. package/dist/chunks/devtools.mjs +1 -1
  3. package/dist/chunks/fingerprint2.cjs +1 -1
  4. package/dist/chunks/fingerprint2.mjs +1 -1
  5. package/dist/index.cjs +3 -3
  6. package/dist/index.d.cts +4 -4
  7. package/dist/index.d.mts +4 -4
  8. package/dist/index.d.ts +4 -4
  9. package/dist/index.mjs +3 -3
  10. package/dist/nuxt.d.cts +1 -1
  11. package/dist/nuxt.d.mts +1 -1
  12. package/dist/nuxt.d.ts +1 -1
  13. package/dist/runtime/plugins/attaform.cjs +2 -2
  14. package/dist/runtime/plugins/attaform.mjs +2 -2
  15. package/dist/shared/{attaform.DRWrVSkH.cjs → attaform.AkX9wzfY.cjs} +2 -2
  16. package/dist/shared/{attaform.DRWrVSkH.cjs.map → attaform.AkX9wzfY.cjs.map} +1 -1
  17. package/dist/shared/{attaform.0zueP54D.d.mts → attaform.B1N47eDM.d.ts} +9 -1
  18. package/dist/shared/{attaform.CqlLImc1.cjs → attaform.Bnm0FQaH.cjs} +4 -4
  19. package/dist/shared/{attaform.CqlLImc1.cjs.map → attaform.Bnm0FQaH.cjs.map} +1 -1
  20. package/dist/shared/{attaform.CB1kYKUB.cjs → attaform.Buedl_UL.cjs} +66 -2
  21. package/dist/shared/attaform.Buedl_UL.cjs.map +1 -0
  22. package/dist/shared/{attaform.DQcdvxKZ.cjs → attaform.CAVK56f8.cjs} +122 -2
  23. package/dist/shared/attaform.CAVK56f8.cjs.map +1 -0
  24. package/dist/shared/{attaform.BVjueUPu.cjs → attaform.CBMI57RP.cjs} +3 -3
  25. package/dist/shared/{attaform.BVjueUPu.cjs.map → attaform.CBMI57RP.cjs.map} +1 -1
  26. package/dist/shared/{attaform.DfnwaGW2.cjs → attaform.CE-KJZ0j.cjs} +4 -4
  27. package/dist/shared/{attaform.DfnwaGW2.cjs.map → attaform.CE-KJZ0j.cjs.map} +1 -1
  28. package/dist/shared/{attaform.DgbHNLf_.mjs → attaform.CZpUm-2l.mjs} +2 -2
  29. package/dist/shared/{attaform.DgbHNLf_.mjs.map → attaform.CZpUm-2l.mjs.map} +1 -1
  30. package/dist/shared/{attaform.Dbzwtn4g.mjs → attaform.ChY7tIrn.mjs} +4 -4
  31. package/dist/shared/{attaform.Dbzwtn4g.mjs.map → attaform.ChY7tIrn.mjs.map} +1 -1
  32. package/dist/shared/{attaform.yqcYwt0d.d.ts → attaform.CqW4gF_Z.d.cts} +9 -1
  33. package/dist/shared/{attaform.ByIB7i15.mjs → attaform.CwqTCeTZ.mjs} +4 -4
  34. package/dist/shared/{attaform.ByIB7i15.mjs.map → attaform.CwqTCeTZ.mjs.map} +1 -1
  35. package/dist/shared/{attaform.Bx6pgrIy.d.cts → attaform.DTn1J0Eq.d.mts} +1 -1
  36. package/dist/shared/{attaform.DK6_Ctv7.cjs → attaform.DWKcw1ud.cjs} +82 -4
  37. package/dist/shared/attaform.DWKcw1ud.cjs.map +1 -0
  38. package/dist/shared/{attaform.C5qkSN6t.mjs → attaform.DwsfkfSY.mjs} +122 -2
  39. package/dist/shared/attaform.DwsfkfSY.mjs.map +1 -0
  40. package/dist/shared/{attaform.BjiHiYAZ.d.ts → attaform.EeVCVnoH.d.ts} +1 -1
  41. package/dist/shared/{attaform.DvqdxvNU.d.mts → attaform.Ib7oSpxj.d.cts} +1 -1
  42. package/dist/shared/{attaform.DUc6cetN.d.cts → attaform.QFrCtJBO.d.cts} +38 -0
  43. package/dist/shared/{attaform.DUc6cetN.d.ts → attaform.QFrCtJBO.d.mts} +38 -0
  44. package/dist/shared/{attaform.DUc6cetN.d.mts → attaform.QFrCtJBO.d.ts} +38 -0
  45. package/dist/shared/{attaform.DwCtxauq.mjs → attaform.QwLSdxuk.mjs} +82 -4
  46. package/dist/shared/attaform.QwLSdxuk.mjs.map +1 -0
  47. package/dist/shared/{attaform.DHjRN5JP.d.cts → attaform.f0l5ydy1.d.mts} +9 -1
  48. package/dist/shared/{attaform.B_F61Rx1.mjs → attaform.iJ4y3sHU.mjs} +67 -3
  49. package/dist/shared/attaform.iJ4y3sHU.mjs.map +1 -0
  50. package/dist/shared/{attaform.D4ebpNbS.mjs → attaform.lcTiMoma.mjs} +3 -3
  51. package/dist/shared/{attaform.D4ebpNbS.mjs.map → attaform.lcTiMoma.mjs.map} +1 -1
  52. package/dist/transforms.cjs +1 -1
  53. package/dist/transforms.mjs +1 -1
  54. package/dist/vite.cjs +1 -1
  55. package/dist/vite.mjs +1 -1
  56. package/dist/zod-v3.cjs +2 -2
  57. package/dist/zod-v3.d.cts +3 -3
  58. package/dist/zod-v3.d.mts +3 -3
  59. package/dist/zod-v3.d.ts +3 -3
  60. package/dist/zod-v3.mjs +2 -2
  61. package/dist/zod-v4.cjs +2 -2
  62. package/dist/zod-v4.d.cts +5 -5
  63. package/dist/zod-v4.d.mts +5 -5
  64. package/dist/zod-v4.d.ts +5 -5
  65. package/dist/zod-v4.mjs +2 -2
  66. package/dist/zod.cjs +5 -5
  67. package/dist/zod.d.cts +5 -5
  68. package/dist/zod.d.mts +5 -5
  69. package/dist/zod.d.ts +5 -5
  70. package/dist/zod.mjs +5 -5
  71. package/package.json +6 -2
  72. package/dist/shared/attaform.B_F61Rx1.mjs.map +0 -1
  73. package/dist/shared/attaform.C5qkSN6t.mjs.map +0 -1
  74. package/dist/shared/attaform.CB1kYKUB.cjs.map +0 -1
  75. package/dist/shared/attaform.DK6_Ctv7.cjs.map +0 -1
  76. package/dist/shared/attaform.DQcdvxKZ.cjs.map +0 -1
  77. package/dist/shared/attaform.DwCtxauq.mjs.map +0 -1
@@ -340,6 +340,28 @@ function setupAria(el, rv, vnode) {
340
340
  });
341
341
  el[ariaScopeKey] = () => scope.stop();
342
342
  }
343
+ function seedLocksFromDom(el) {
344
+ let locks = el[ariaLockKey];
345
+ if (locks === void 0) {
346
+ locks = /* @__PURE__ */ new Set();
347
+ el[ariaLockKey] = locks;
348
+ }
349
+ for (const attr of MANAGED_ARIA_ATTRS) {
350
+ if (el.hasAttribute(attr)) locks.add(attr);
351
+ }
352
+ }
353
+ function setupAriaLive(el, rv) {
354
+ if (rv.ariaEnabled !== true || rv.ariaDisplayState === void 0) return;
355
+ if (!INTERACTIVE_TAG_NAMES.has(el.tagName)) return;
356
+ seedLocksFromDom(el);
357
+ applyAria(el, rv, null);
358
+ const displayState = rv.ariaDisplayState;
359
+ const scope = vue.effectScope(true);
360
+ scope.run(() => {
361
+ vue.watch(displayState, () => applyAria(el, rv, null), { flush: "post" });
362
+ });
363
+ el[ariaScopeKey] = () => scope.stop();
364
+ }
343
365
  function getSSRAriaProps(rv, vnode) {
344
366
  if (rv.ariaEnabled !== true || rv.ariaDisplayState === void 0) return void 0;
345
367
  const props = vnode?.props ?? null;
@@ -1180,6 +1202,88 @@ function getCheckboxValue(el, checked) {
1180
1202
  return key in el ? el[key] : checked;
1181
1203
  }
1182
1204
  const warnedUnsupportedElements = __DEV__ ? /* @__PURE__ */ new WeakSet() : null;
1205
+ const componentHostLatch = /* @__PURE__ */ new WeakMap();
1206
+ const hostFocusListeners = /* @__PURE__ */ new WeakMap();
1207
+ const hostHealObservers = /* @__PURE__ */ new WeakMap();
1208
+ const SELF_HEAL_MAX_MUTATION_BATCHES = 20;
1209
+ const HOST_CONTROL_SELECTOR = "input:not([type=hidden]), select, textarea";
1210
+ function isLatchableControl(el) {
1211
+ return el.getAttribute("tabindex") !== "-1" && el.getAttribute("aria-hidden") !== "true";
1212
+ }
1213
+ function findHostControl(el) {
1214
+ const descendants = Array.from(el.querySelectorAll(HOST_CONTROL_SELECTOR)).filter(
1215
+ isLatchableControl
1216
+ );
1217
+ return descendants.length === 1 ? descendants[0] : null;
1218
+ }
1219
+ function latchHostControl(el, rv, control) {
1220
+ rv.registerElement(control);
1221
+ setupAriaLive(control, rv);
1222
+ componentHostLatch.set(el, control);
1223
+ }
1224
+ function setupNoLatchHost(el, rv) {
1225
+ rv.markHostConnected(true);
1226
+ const focusin = (event) => {
1227
+ const from = event.relatedTarget;
1228
+ if (from instanceof Node && el.contains(from)) return;
1229
+ rv.markFocused(true);
1230
+ };
1231
+ const focusout = (event) => {
1232
+ const to = event.relatedTarget;
1233
+ if (to instanceof Node && el.contains(to)) return;
1234
+ rv.markFocused(false);
1235
+ };
1236
+ addTrackedListener(el, "focusin", focusin);
1237
+ addTrackedListener(el, "focusout", focusout);
1238
+ hostFocusListeners.set(el, { focusin, focusout });
1239
+ componentHostLatch.set(el, null);
1240
+ }
1241
+ function trySupersedeHostLatch(el, rv) {
1242
+ const control = findHostControl(el);
1243
+ if (control === null) return false;
1244
+ const focusListeners = hostFocusListeners.get(el);
1245
+ if (focusListeners !== void 0) {
1246
+ el.removeEventListener("focusin", focusListeners.focusin);
1247
+ el.removeEventListener("focusout", focusListeners.focusout);
1248
+ hostFocusListeners.delete(el);
1249
+ }
1250
+ latchHostControl(el, rv, control);
1251
+ return true;
1252
+ }
1253
+ function scheduleHostSelfHeal(el, rv) {
1254
+ void vue.nextTick(() => {
1255
+ if (componentHostLatch.get(el) !== null || !el.isConnected) return;
1256
+ if (trySupersedeHostLatch(el, rv)) return;
1257
+ observeForLateHostControl(el, rv);
1258
+ });
1259
+ }
1260
+ function observeForLateHostControl(el, rv) {
1261
+ let batches = 0;
1262
+ const observer = new MutationObserver(() => {
1263
+ const done = componentHostLatch.get(el) !== null || !el.isConnected || trySupersedeHostLatch(el, rv) || ++batches >= SELF_HEAL_MAX_MUTATION_BATCHES;
1264
+ if (done) {
1265
+ observer.disconnect();
1266
+ hostHealObservers.delete(el);
1267
+ }
1268
+ });
1269
+ observer.observe(el, { childList: true, subtree: true });
1270
+ hostHealObservers.set(el, observer);
1271
+ }
1272
+ function activateComponentHost(el, rv) {
1273
+ if (rv.hasRegisteredDescendant(el))
1274
+ return;
1275
+ el[registerProtocol.REGISTER_OWNER_MARKER] = true;
1276
+ if (!el.tagName.includes("-")) {
1277
+ el.removeAttribute("registerValue");
1278
+ }
1279
+ const control = findHostControl(el);
1280
+ if (control !== null) {
1281
+ latchHostControl(el, rv, control);
1282
+ return;
1283
+ }
1284
+ setupNoLatchHost(el, rv);
1285
+ scheduleHostSelfHeal(el, rv);
1286
+ }
1183
1287
  const vRegisterDynamic = {
1184
1288
  created(el, binding, vnode) {
1185
1289
  callModelHook(el, binding, vnode, null, "created");
@@ -1187,6 +1291,9 @@ const vRegisterDynamic = {
1187
1291
  },
1188
1292
  mounted(el, binding, vnode) {
1189
1293
  callModelHook(el, binding, vnode, null, "mounted");
1294
+ if (binding.modifiers[registerProtocol.SSR_COMPONENT_HOST_MODIFIER] === true && registerProtocol.isRegisterValue(binding.value)) {
1295
+ activateComponentHost(el, binding.value);
1296
+ }
1190
1297
  if (__DEV__ && warnedUnsupportedElements !== null && !INTERACTIVE_TAG_NAMES.has(el.tagName) && !warnedUnsupportedElements.has(el)) {
1191
1298
  void vue.nextTick(() => {
1192
1299
  if (warnedUnsupportedElements.has(el)) return;
@@ -1230,6 +1337,19 @@ const vRegisterDynamic = {
1230
1337
  teardownValueSync(el);
1231
1338
  if (!registerProtocol.isRegisterValue(value)) return;
1232
1339
  value.deregisterElement(el);
1340
+ if (componentHostLatch.has(el)) {
1341
+ const healObserver = hostHealObservers.get(el);
1342
+ if (healObserver !== void 0) {
1343
+ healObserver.disconnect();
1344
+ hostHealObservers.delete(el);
1345
+ }
1346
+ const latchedControl = componentHostLatch.get(el);
1347
+ if (latchedControl != null) {
1348
+ teardownAria(latchedControl);
1349
+ value.deregisterElement(latchedControl);
1350
+ } else value.markHostConnected(false);
1351
+ componentHostLatch.delete(el);
1352
+ }
1233
1353
  delete el.composing;
1234
1354
  delete el._assigning;
1235
1355
  delete el._syncFromStorage;
@@ -1251,7 +1371,7 @@ const vRegisterDynamic = {
1251
1371
  const isComponentHostModifier = modifiers?.[registerProtocol.SSR_COMPONENT_HOST_MODIFIER] === true;
1252
1372
  const suppressHostAria = isComponentHostModifier || realVnode !== null && !isInteractiveElementVnode;
1253
1373
  const ariaProps = suppressHostAria ? void 0 : getSSRAriaProps(rv, realVnode);
1254
- const formStateProps = realVnode !== null ? getSSRFormStateProps(rv, realVnode) : void 0;
1374
+ const formStateProps = realVnode !== null && !isComponentHostModifier ? getSSRFormStateProps(rv, realVnode) : void 0;
1255
1375
  if (ariaProps === void 0 && formStateProps === void 0) return void 0;
1256
1376
  return { ...ariaProps, ...formStateProps };
1257
1377
  }
@@ -1483,4 +1603,4 @@ exports.segmentsForPathKey = segmentsForPathKey;
1483
1603
  exports.toError = toError;
1484
1604
  exports.useRegistry = useRegistry;
1485
1605
  exports.vRegister = vRegister;
1486
- //# sourceMappingURL=attaform.DQcdvxKZ.cjs.map
1606
+ //# sourceMappingURL=attaform.CAVK56f8.cjs.map