@threadlabs/looma 0.6.4 → 0.7.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.
Files changed (259) hide show
  1. package/components/ui-button/ui-button.html +103 -81
  2. package/components/ui-checkbox/ui-checkbox.html +4 -1
  3. package/components/ui-combobox/ui-combobox.html +40 -3
  4. package/components/ui-combobox/ui-combobox.js +27 -5
  5. package/components/ui-select/ui-select.html +3 -5
  6. package/dist/index.js +1 -1
  7. package/package.json +2 -2
  8. package/styles/ui-affordance-scope.css +1 -1
  9. package/styles/ui-avatar-group.css +1 -1
  10. package/styles/ui-avatar.css +1 -1
  11. package/styles/ui-badge.css +1 -1
  12. package/styles/ui-button.css +112 -80
  13. package/styles/ui-callout.css +1 -1
  14. package/styles/ui-checkbox.css +5 -2
  15. package/styles/ui-cluster.css +1 -1
  16. package/styles/ui-combobox.css +38 -1
  17. package/styles/ui-container.css +1 -1
  18. package/styles/ui-context-menu.css +1 -1
  19. package/styles/ui-dialog.css +1 -1
  20. package/styles/ui-disclosure.css +1 -1
  21. package/styles/ui-editable.css +1 -1
  22. package/styles/ui-editor-insert-table-grid.css +1 -1
  23. package/styles/ui-editor-mention-menu.css +1 -1
  24. package/styles/ui-editor-slash-menu.css +1 -1
  25. package/styles/ui-editor-table-context-menu.css +1 -1
  26. package/styles/ui-editor-table-overlay.css +1 -1
  27. package/styles/ui-editor-table-toolbar.css +1 -1
  28. package/styles/ui-editor-toolbar.css +1 -1
  29. package/styles/ui-floating-action-button.css +1 -1
  30. package/styles/ui-form-field.css +1 -1
  31. package/styles/ui-grid.css +1 -1
  32. package/styles/ui-icon-button.css +1 -1
  33. package/styles/ui-icon.css +1 -1
  34. package/styles/ui-input.css +1 -1
  35. package/styles/ui-menu-item.css +1 -1
  36. package/styles/ui-menu.css +1 -1
  37. package/styles/ui-popover.css +1 -1
  38. package/styles/ui-radio-group.css +1 -1
  39. package/styles/ui-radio.css +1 -1
  40. package/styles/ui-reel.css +1 -1
  41. package/styles/ui-search-result-row.css +1 -1
  42. package/styles/ui-search-shell.css +1 -1
  43. package/styles/ui-select.css +4 -5
  44. package/styles/ui-separator.css +1 -1
  45. package/styles/ui-sidebar.css +1 -1
  46. package/styles/ui-stack.css +1 -1
  47. package/styles/ui-switch.css +1 -1
  48. package/styles/ui-switcher.css +1 -1
  49. package/styles/ui-tabs.css +1 -1
  50. package/styles/ui-textarea.css +1 -1
  51. package/styles/ui-toast-region.css +1 -1
  52. package/styles/ui-tooltip.css +1 -1
  53. package/styles/ui-top-bar.css +1 -1
  54. package/styles/ui-tree-item.css +1 -1
  55. package/styles/ui-tree.css +1 -1
  56. package/theme-dark.css +6 -30
  57. package/theme-high-contrast.css +30 -20
  58. package/theme-light.css +2 -16
  59. package/tokens.css +33 -24
  60. package/vanilla/UiAffordanceScope.d.ts +1 -1
  61. package/vanilla/UiAffordanceScope.js +1 -1
  62. package/vanilla/UiAvatar.d.ts +1 -1
  63. package/vanilla/UiAvatar.js +1 -1
  64. package/vanilla/UiAvatarGroup.d.ts +1 -1
  65. package/vanilla/UiAvatarGroup.js +1 -1
  66. package/vanilla/UiBadge.d.ts +1 -1
  67. package/vanilla/UiBadge.js +1 -1
  68. package/vanilla/UiButton.d.ts +2 -2
  69. package/vanilla/UiButton.js +2 -2
  70. package/vanilla/UiCallout.d.ts +1 -1
  71. package/vanilla/UiCallout.js +1 -1
  72. package/vanilla/UiCheckbox.d.ts +1 -1
  73. package/vanilla/UiCheckbox.js +1 -1
  74. package/vanilla/UiCluster.d.ts +1 -1
  75. package/vanilla/UiCluster.js +1 -1
  76. package/vanilla/UiCombobox.d.ts +1 -1
  77. package/vanilla/UiCombobox.js +2 -2
  78. package/vanilla/UiContainer.d.ts +1 -1
  79. package/vanilla/UiContainer.js +1 -1
  80. package/vanilla/UiContextMenu.d.ts +1 -1
  81. package/vanilla/UiContextMenu.js +1 -1
  82. package/vanilla/UiDialog.d.ts +1 -1
  83. package/vanilla/UiDialog.js +1 -1
  84. package/vanilla/UiDisclosure.d.ts +1 -1
  85. package/vanilla/UiDisclosure.js +1 -1
  86. package/vanilla/UiEditable.d.ts +1 -1
  87. package/vanilla/UiEditable.js +1 -1
  88. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  89. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  90. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  91. package/vanilla/UiEditorMentionMenu.js +1 -1
  92. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  93. package/vanilla/UiEditorSlashMenu.js +1 -1
  94. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  95. package/vanilla/UiEditorTableContextMenu.js +1 -1
  96. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  97. package/vanilla/UiEditorTableOverlay.js +1 -1
  98. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  99. package/vanilla/UiEditorTableToolbar.js +1 -1
  100. package/vanilla/UiEditorToolbar.d.ts +1 -1
  101. package/vanilla/UiEditorToolbar.js +1 -1
  102. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  103. package/vanilla/UiFloatingActionButton.js +1 -1
  104. package/vanilla/UiFormField.d.ts +1 -1
  105. package/vanilla/UiFormField.js +1 -1
  106. package/vanilla/UiGrid.d.ts +1 -1
  107. package/vanilla/UiGrid.js +1 -1
  108. package/vanilla/UiIcon.d.ts +1 -1
  109. package/vanilla/UiIcon.js +1 -1
  110. package/vanilla/UiIconButton.d.ts +1 -1
  111. package/vanilla/UiIconButton.js +1 -1
  112. package/vanilla/UiInput.d.ts +1 -1
  113. package/vanilla/UiInput.js +1 -1
  114. package/vanilla/UiMenu.d.ts +1 -1
  115. package/vanilla/UiMenu.js +1 -1
  116. package/vanilla/UiMenuItem.d.ts +1 -1
  117. package/vanilla/UiMenuItem.js +1 -1
  118. package/vanilla/UiPopover.d.ts +1 -1
  119. package/vanilla/UiPopover.js +1 -1
  120. package/vanilla/UiRadio.d.ts +1 -1
  121. package/vanilla/UiRadio.js +1 -1
  122. package/vanilla/UiRadioGroup.d.ts +1 -1
  123. package/vanilla/UiRadioGroup.js +1 -1
  124. package/vanilla/UiReel.d.ts +1 -1
  125. package/vanilla/UiReel.js +1 -1
  126. package/vanilla/UiSearchResultRow.d.ts +1 -1
  127. package/vanilla/UiSearchResultRow.js +1 -1
  128. package/vanilla/UiSearchShell.d.ts +1 -1
  129. package/vanilla/UiSearchShell.js +1 -1
  130. package/vanilla/UiSelect.d.ts +1 -2
  131. package/vanilla/UiSelect.js +4 -7
  132. package/vanilla/UiSeparator.d.ts +1 -1
  133. package/vanilla/UiSeparator.js +1 -1
  134. package/vanilla/UiSidebar.d.ts +1 -1
  135. package/vanilla/UiSidebar.js +1 -1
  136. package/vanilla/UiStack.d.ts +1 -1
  137. package/vanilla/UiStack.js +1 -1
  138. package/vanilla/UiSwitch.d.ts +1 -1
  139. package/vanilla/UiSwitch.js +1 -1
  140. package/vanilla/UiSwitcher.d.ts +1 -1
  141. package/vanilla/UiSwitcher.js +1 -1
  142. package/vanilla/UiTabs.d.ts +1 -1
  143. package/vanilla/UiTabs.js +1 -1
  144. package/vanilla/UiTextarea.d.ts +1 -1
  145. package/vanilla/UiTextarea.js +1 -1
  146. package/vanilla/UiToastRegion.d.ts +1 -1
  147. package/vanilla/UiToastRegion.js +1 -1
  148. package/vanilla/UiTooltip.d.ts +1 -1
  149. package/vanilla/UiTooltip.js +1 -1
  150. package/vanilla/UiTopBar.d.ts +1 -1
  151. package/vanilla/UiTopBar.js +1 -1
  152. package/vanilla/UiTree.d.ts +1 -1
  153. package/vanilla/UiTree.js +1 -1
  154. package/vanilla/UiTreeItem.d.ts +1 -1
  155. package/vanilla/UiTreeItem.js +1 -1
  156. package/vue/UiAffordanceScope.vue +8 -84
  157. package/vue/UiAvatar.d.ts +1 -1
  158. package/vue/UiAvatar.vue +9 -106
  159. package/vue/UiAvatarGroup.vue +9 -96
  160. package/vue/UiBadge.vue +1 -1
  161. package/vue/UiButton.d.ts +2 -2
  162. package/vue/UiButton.vue +104 -97
  163. package/vue/UiCallout.vue +1 -1
  164. package/vue/UiCheckbox.vue +26 -124
  165. package/vue/UiCluster.vue +1 -1
  166. package/vue/UiCombobox.d.ts +1 -1
  167. package/vue/UiCombobox.vue +270 -479
  168. package/vue/UiContainer.vue +1 -1
  169. package/vue/UiContextMenu.vue +34 -141
  170. package/vue/UiDialog.vue +25 -126
  171. package/vue/UiDisclosure.vue +26 -138
  172. package/vue/UiEditable.vue +46 -158
  173. package/vue/UiEditorInsertTableGrid.vue +19 -138
  174. package/vue/UiEditorMentionMenu.vue +17 -124
  175. package/vue/UiEditorSlashMenu.vue +17 -109
  176. package/vue/UiEditorTableContextMenu.vue +34 -122
  177. package/vue/UiEditorTableOverlay.vue +61 -167
  178. package/vue/UiEditorTableToolbar.vue +34 -142
  179. package/vue/UiEditorToolbar.vue +1 -1
  180. package/vue/UiFloatingActionButton.vue +1 -1
  181. package/vue/UiFormField.vue +7 -79
  182. package/vue/UiGrid.vue +1 -1
  183. package/vue/UiIcon.vue +8 -84
  184. package/vue/UiIconButton.vue +7 -79
  185. package/vue/UiInput.vue +7 -79
  186. package/vue/UiMenu.vue +42 -127
  187. package/vue/UiMenuItem.vue +1 -1
  188. package/vue/UiPopover.vue +25 -121
  189. package/vue/UiRadio.vue +22 -123
  190. package/vue/UiRadioGroup.d.ts +1 -1
  191. package/vue/UiRadioGroup.vue +32 -119
  192. package/vue/UiReel.vue +1 -1
  193. package/vue/UiSearchResultRow.vue +1 -1
  194. package/vue/UiSearchShell.vue +25 -121
  195. package/vue/UiSelect.d.ts +0 -2
  196. package/vue/UiSelect.vue +9 -85
  197. package/vue/UiSeparator.vue +1 -1
  198. package/vue/UiSidebar.vue +32 -133
  199. package/vue/UiStack.vue +1 -1
  200. package/vue/UiSwitch.vue +22 -123
  201. package/vue/UiSwitcher.vue +1 -1
  202. package/vue/UiTabs.vue +24 -128
  203. package/vue/UiTextarea.vue +7 -79
  204. package/vue/UiToastRegion.vue +37 -126
  205. package/vue/UiTooltip.vue +25 -124
  206. package/vue/UiTopBar.vue +1 -1
  207. package/vue/UiTree.vue +56 -137
  208. package/vue/UiTreeItem.vue +28 -144
  209. package/vue/chunks/UiAffordanceScope.js +9 -78
  210. package/vue/chunks/UiAvatar.js +13 -89
  211. package/vue/chunks/UiAvatarGroup.js +10 -80
  212. package/vue/chunks/UiBadge.js +1 -1
  213. package/vue/chunks/UiButton.js +3 -3
  214. package/vue/chunks/UiCallout.js +1 -1
  215. package/vue/chunks/UiCheckbox.js +17 -95
  216. package/vue/chunks/UiCluster.js +1 -1
  217. package/vue/chunks/UiCombobox.js +115 -326
  218. package/vue/chunks/UiContainer.js +1 -1
  219. package/vue/chunks/UiContextMenu.js +21 -113
  220. package/vue/chunks/UiDialog.js +20 -99
  221. package/vue/chunks/UiDisclosure.js +22 -112
  222. package/vue/chunks/UiEditable.js +32 -128
  223. package/vue/chunks/UiEditorInsertTableGrid.js +22 -116
  224. package/vue/chunks/UiEditorMentionMenu.js +18 -116
  225. package/vue/chunks/UiEditorSlashMenu.js +15 -101
  226. package/vue/chunks/UiEditorTableContextMenu.js +12 -91
  227. package/vue/chunks/UiEditorTableOverlay.js +29 -120
  228. package/vue/chunks/UiEditorTableToolbar.js +16 -111
  229. package/vue/chunks/UiEditorToolbar.js +1 -1
  230. package/vue/chunks/UiFloatingActionButton.js +1 -1
  231. package/vue/chunks/UiFormField.js +8 -73
  232. package/vue/chunks/UiGrid.js +1 -1
  233. package/vue/chunks/UiIcon.js +9 -78
  234. package/vue/chunks/UiIconButton.js +8 -73
  235. package/vue/chunks/UiInput.js +8 -73
  236. package/vue/chunks/UiMenu.js +25 -111
  237. package/vue/chunks/UiMenuItem.js +1 -1
  238. package/vue/chunks/UiPopover.js +18 -105
  239. package/vue/chunks/UiRadio.js +17 -95
  240. package/vue/chunks/UiRadioGroup.js +23 -105
  241. package/vue/chunks/UiReel.js +1 -1
  242. package/vue/chunks/UiSearchResultRow.js +1 -1
  243. package/vue/chunks/UiSearchShell.js +17 -94
  244. package/vue/chunks/UiSelect.js +8 -79
  245. package/vue/chunks/UiSeparator.js +1 -1
  246. package/vue/chunks/UiSidebar.js +23 -108
  247. package/vue/chunks/UiStack.js +1 -1
  248. package/vue/chunks/UiSwitch.js +17 -95
  249. package/vue/chunks/UiSwitcher.js +1 -1
  250. package/vue/chunks/UiTabs.js +22 -103
  251. package/vue/chunks/UiTextarea.js +8 -73
  252. package/vue/chunks/UiToastRegion.js +27 -112
  253. package/vue/chunks/UiTooltip.js +18 -106
  254. package/vue/chunks/UiTopBar.js +1 -1
  255. package/vue/chunks/UiTree.js +31 -109
  256. package/vue/chunks/UiTreeItem.js +29 -119
  257. package/vue/chunks/host.js +101 -0
  258. package/vue/components.css +844 -797
  259. package/vue/host.ts +154 -0
@@ -1,5 +1,6 @@
1
+ import { n as useComponentHost, t as createDispatch } from "./host.js";
1
2
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, useTemplateRef, watchEffect } from "vue";
3
+ import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, openBlock, ref, renderSlot, useTemplateRef } from "vue";
3
4
  import * as controllerModule from "@threadlabs/looma/components/ui-checkbox/ui-checkbox.js";
4
5
  //#region .build/vue/UiCheckbox.vue?vue&type=script&setup=true&lang.ts
5
6
  var _hoisted_1 = ["data-ui-checkbox-state"];
@@ -48,100 +49,21 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
48
49
  const internalChecked = ref(false);
49
50
  /** The values the styles' :host-state() rules test. */
50
51
  const hostState = computed(() => [props.disabled && "disabled"].filter(Boolean).join(" "));
51
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
52
- function dispatch(name, detail) {
53
- const declared = { change: {
54
- bubbles: true,
55
- composed: true,
56
- cancelable: false
57
- } };
58
- const checks = { change: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["checked"] === "boolean" && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
59
- "checked",
60
- "value",
61
- "trigger"
62
- ].includes(key)) };
63
- if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
64
- const emitEvent = emit;
65
- emitEvent(name, detail);
66
- if (detail !== null && typeof detail === "object" && "checked" in detail) emitEvent("update:checked", detail["checked"]);
67
- if (detail !== null && typeof detail === "object" && "value" in detail) emitEvent("update:value", detail["value"]);
68
- return root.value?.dispatchEvent(new CustomEvent(name, {
69
- bubbles: true,
70
- composed: true,
71
- ...declared[name],
72
- detail
73
- })) ?? true;
74
- }
75
- function read(name) {
76
- if (name === "internalChecked") return internalChecked.value;
77
- return props[name];
78
- }
79
- function write(name, value) {
80
- if (name === "internalChecked") {
81
- internalChecked.value = value;
82
- return true;
83
- }
84
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
85
- }
86
- const stops = [];
87
- const host = {
88
- get element() {
89
- return root.value;
90
- },
91
- state: new Proxy({}, {
92
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
93
- set: (_target, name, value) => typeof name === "string" && write(name, value)
94
- }),
95
- refs: { get input() {
96
- return inputElement.value;
97
- } },
98
- elements: new Proxy({}, { get: (_target, name) => {
99
- if (typeof name !== "string" || root.value === null) return void 0;
100
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
101
- } }),
102
- signal(initialValue) {
103
- const value = shallowRef(initialValue);
104
- return {
105
- get: () => value.value,
106
- set: (next) => {
107
- if (!Object.is(value.value, next)) value.value = next;
108
- },
109
- update: (next) => {
110
- const updated = next(value.value);
111
- if (!Object.is(value.value, updated)) value.value = updated;
112
- }
113
- };
114
- },
115
- computed(compute) {
116
- const value = computed(compute);
117
- return { get: () => value.value };
118
- },
119
- effect(run) {
120
- const stop = watchEffect((onCleanup) => {
121
- const cleanup = run();
122
- if (typeof cleanup === "function") onCleanup(cleanup);
123
- }, { flush: "post" });
124
- stops.push(stop);
125
- return stop;
126
- },
127
- on(event, listener) {
128
- const element = root.value;
129
- element?.addEventListener(event, listener);
130
- const off = () => element?.removeEventListener(event, listener);
131
- stops.push(off);
132
- return off;
133
- },
134
- dispatch
135
- };
136
- let cleanup;
137
- onMounted(() => {
138
- Promise.resolve(controllerModule.default(host)).then((result) => {
139
- cleanup = result;
140
- });
52
+ const isChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["checked"] === "boolean" && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
53
+ "checked",
54
+ "value",
55
+ "trigger"
56
+ ].includes(key));
57
+ const dispatch = createDispatch(root, emit, {
58
+ checks: { change: isChangeDetail },
59
+ modeled: ["checked", "value"]
141
60
  });
142
- onBeforeUnmount(() => {
143
- for (const stop of stops.splice(0)) stop();
144
- if (typeof cleanup === "function") cleanup();
61
+ useComponentHost(controllerModule.default, {
62
+ root,
63
+ dispatch,
64
+ props,
65
+ refs: { input: inputElement },
66
+ state: { internalChecked }
145
67
  });
146
68
  return (_ctx, _cache) => {
147
69
  return openBlock(), createElementBlock("label", mergeProps({ "data-component": "ui-checkbox" }, _ctx.$attrs, {
@@ -159,6 +81,6 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
159
81
  }, null, 40, _hoisted_2), createElementVNode("span", _hoisted_3, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 16, _hoisted_1);
160
82
  };
161
83
  }
162
- }), [["__scopeId", "data-v-acf71232"]]);
84
+ }), [["__scopeId", "data-v-964081a0"]]);
163
85
  //#endregion
164
86
  export { UiCheckbox_default as t };
@@ -19,6 +19,6 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
19
19
  return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-cluster" }, _ctx.$attrs, { "data-ui-cluster-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
20
20
  };
21
21
  }
22
- }), [["__scopeId", "data-v-6de2f2e4"]]);
22
+ }), [["__scopeId", "data-v-9a0304f1"]]);
23
23
  //#endregion
24
24
  export { UiCluster_default as t };
@@ -1,7 +1,8 @@
1
+ import { n as useComponentHost, t as createDispatch } from "./host.js";
1
2
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
3
  import { t as UiBadge_default } from "./UiBadge.js";
3
4
  import { t as UiTooltip_default } from "./UiTooltip.js";
4
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, onBeforeUnmount, onMounted, openBlock, ref, renderList, renderSlot, shallowRef, toDisplayString, useTemplateRef, watchEffect, withCtx } from "vue";
5
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, useTemplateRef, withCtx } from "vue";
5
6
  import * as controllerModule from "@threadlabs/looma/components/ui-combobox/ui-combobox.js";
6
7
  //#region .build/vue/UiCombobox.vue?vue&type=script&setup=true&lang.ts
7
8
  var _hoisted_1 = ["data-ui-combobox-state"];
@@ -174,338 +175,126 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
174
175
  `validationStatus=${encodeURIComponent(validationStatus.value)}`,
175
176
  props.multiple && "multiple"
176
177
  ].filter(Boolean).join(" "));
177
- /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
178
- function dispatch(name, detail) {
179
- const declared = {
180
- "query-change": {
181
- bubbles: true,
182
- composed: true,
183
- cancelable: false
184
- },
185
- "value-change": {
186
- bubbles: true,
187
- composed: true,
188
- cancelable: false
189
- },
190
- "free-entry": {
191
- bubbles: true,
192
- composed: true,
193
- cancelable: false
194
- },
195
- "create-entry": {
196
- bubbles: true,
197
- composed: true,
198
- cancelable: false
199
- },
200
- "validation-change": {
201
- bubbles: true,
202
- composed: true,
203
- cancelable: false
204
- },
205
- "options-change": {
206
- bubbles: true,
207
- composed: true,
208
- cancelable: false
209
- },
210
- "add-item": {
211
- bubbles: true,
212
- composed: true,
213
- cancelable: false
214
- },
215
- "remove-item": {
216
- bubbles: true,
217
- composed: true,
218
- cancelable: false
219
- },
220
- "create-item": {
221
- bubbles: true,
222
- composed: true,
223
- cancelable: false
224
- }
225
- };
226
- const checks = {
227
- "query-change": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && typeof detail["display"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
228
- "query",
229
- "display",
230
- "trigger"
231
- ].includes(key)),
232
- "value-change": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
233
- "id",
234
- "value",
235
- "label",
236
- "group",
237
- "disabled"
238
- ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
239
- "value",
240
- "query",
241
- "option",
242
- "kind",
243
- "trigger"
244
- ].includes(key)) || Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && Object.keys(item).every((key) => [
245
- "id",
246
- "value",
247
- "label",
248
- "group",
249
- "disabled"
250
- ].includes(key))),
251
- "free-entry": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
252
- "id",
253
- "value",
254
- "label",
255
- "group",
256
- "disabled"
257
- ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
258
- "value",
259
- "query",
260
- "option",
261
- "kind",
262
- "trigger"
263
- ].includes(key)),
264
- "create-entry": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
265
- "id",
266
- "value",
267
- "label",
268
- "group",
269
- "disabled"
270
- ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
271
- "value",
272
- "query",
273
- "option",
274
- "kind",
275
- "trigger"
276
- ].includes(key)),
277
- "validation-change": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["status"] === "pristine" || detail["status"] === "pending" || detail["status"] === "valid" || detail["status"] === "warning" || detail["status"] === "error") && typeof detail["touched"] === "boolean" && typeof detail["dirty"] === "boolean" && Array.isArray(detail["issues"]) && detail["issues"].every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["message"] === "string" && (item["path"] === void 0 || Array.isArray(item["path"]) && item["path"].every((item) => true)) && (item["severity"] === void 0 || item["severity"] === "error" || item["severity"] === "warning") && Object.keys(item).every((key) => [
278
- "message",
279
- "path",
280
- "severity"
281
- ].includes(key))) && (detail["output"] === void 0 || true) && Object.keys(detail).every((key) => [
282
- "status",
283
- "touched",
284
- "dirty",
285
- "issues",
286
- "output"
287
- ].includes(key)),
288
- "options-change": (detail) => Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && Object.keys(item).every((key) => [
289
- "id",
290
- "value",
291
- "label",
292
- "group",
293
- "disabled"
294
- ].includes(key))),
295
- "add-item": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["item"] !== null && typeof detail["item"] === "object" && !Array.isArray(detail["item"]) && typeof detail["item"]["id"] === "string" && typeof detail["item"]["value"] === "string" && typeof detail["item"]["label"] === "string" && (detail["item"]["group"] === void 0 || typeof detail["item"]["group"] === "string") && (detail["item"]["disabled"] === void 0 || typeof detail["item"]["disabled"] === "boolean") && Object.keys(detail["item"]).every((key) => [
296
- "id",
297
- "value",
298
- "label",
299
- "group",
300
- "disabled"
301
- ].includes(key)) && Number.isInteger(detail["index"]) && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
302
- "item",
303
- "index",
304
- "trigger"
305
- ].includes(key)),
306
- "remove-item": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["item"] !== null && typeof detail["item"] === "object" && !Array.isArray(detail["item"]) && typeof detail["item"]["id"] === "string" && typeof detail["item"]["value"] === "string" && typeof detail["item"]["label"] === "string" && (detail["item"]["group"] === void 0 || typeof detail["item"]["group"] === "string") && (detail["item"]["disabled"] === void 0 || typeof detail["item"]["disabled"] === "boolean") && Object.keys(detail["item"]).every((key) => [
307
- "id",
308
- "value",
309
- "label",
310
- "group",
311
- "disabled"
312
- ].includes(key)) && Number.isInteger(detail["index"]) && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
313
- "item",
314
- "index",
315
- "trigger"
316
- ].includes(key)),
317
- "create-item": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["query", "trigger"].includes(key))
318
- };
319
- if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
320
- const emitEvent = emit;
321
- emitEvent(name, detail);
322
- if (detail !== null && typeof detail === "object" && "query" in detail) emitEvent("update:query", detail["query"]);
323
- if (detail !== null && typeof detail === "object" && "value" in detail) emitEvent("update:value", detail["value"]);
324
- return root.value?.dispatchEvent(new CustomEvent(name, {
325
- bubbles: true,
326
- composed: true,
327
- ...declared[name],
328
- detail
329
- })) ?? true;
330
- }
331
- function read(name) {
332
- if (name === "internalItems") return internalItems.value;
333
- if (name === "raw") return raw.value;
334
- if (name === "display") return display.value;
335
- if (name === "selected") return selected.value;
336
- if (name === "expanded") return expanded.value;
337
- if (name === "rows") return rows.value;
338
- if (name === "active") return active.value;
339
- if (name === "loading") return loading.value;
340
- if (name === "helpOpen") return helpOpen.value;
341
- if (name === "lookupError") return lookupError.value;
342
- if (name === "validation") return validation.value;
343
- if (name === "uid") return uid.value;
344
- if (name === "groups") return groups.value;
345
- if (name === "creatable") return creatable.value;
346
- if (name === "createIndex") return createIndex.value;
347
- if (name === "message") return message.value;
348
- if (name === "statusText") return statusText.value;
349
- if (name === "validationStatus") return validationStatus.value;
350
- return props[name];
351
- }
352
- function write(name, value) {
353
- if (name === "internalItems") {
354
- internalItems.value = value;
355
- return true;
356
- }
357
- if (name === "raw") {
358
- raw.value = value;
359
- return true;
360
- }
361
- if (name === "display") {
362
- display.value = value;
363
- return true;
364
- }
365
- if (name === "selected") {
366
- selected.value = value;
367
- return true;
368
- }
369
- if (name === "expanded") {
370
- expanded.value = value;
371
- return true;
372
- }
373
- if (name === "rows") {
374
- rows.value = value;
375
- return true;
376
- }
377
- if (name === "active") {
378
- active.value = value;
379
- return true;
380
- }
381
- if (name === "loading") {
382
- loading.value = value;
383
- return true;
384
- }
385
- if (name === "helpOpen") {
386
- helpOpen.value = value;
387
- return true;
388
- }
389
- if (name === "lookupError") {
390
- lookupError.value = value;
391
- return true;
392
- }
393
- if (name === "validation") {
394
- validation.value = value;
395
- return true;
396
- }
397
- if (name === "uid") {
398
- uid.value = value;
399
- return true;
400
- }
401
- if (name === "groups") {
402
- groups.value = value;
403
- return true;
404
- }
405
- if (name === "creatable") {
406
- creatable.value = value;
407
- return true;
408
- }
409
- if (name === "createIndex") {
410
- createIndex.value = value;
411
- return true;
412
- }
413
- if (name === "message") {
414
- message.value = value;
415
- return true;
416
- }
417
- if (name === "statusText") {
418
- statusText.value = value;
419
- return true;
420
- }
421
- if (name === "validationStatus") {
422
- validationStatus.value = value;
423
- return true;
424
- }
425
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
426
- }
427
- const stops = [];
428
- const host = {
429
- get element() {
430
- return root.value;
178
+ const isQueryChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && typeof detail["display"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
179
+ "query",
180
+ "display",
181
+ "trigger"
182
+ ].includes(key));
183
+ const isValueChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
184
+ "id",
185
+ "value",
186
+ "label",
187
+ "group",
188
+ "disabled"
189
+ ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
190
+ "value",
191
+ "query",
192
+ "option",
193
+ "kind",
194
+ "trigger"
195
+ ].includes(key)) || Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && Object.keys(item).every((key) => [
196
+ "id",
197
+ "value",
198
+ "label",
199
+ "group",
200
+ "disabled"
201
+ ].includes(key)));
202
+ const isFreeEntryDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && Object.keys(detail["option"]).every((key) => [
203
+ "id",
204
+ "value",
205
+ "label",
206
+ "group",
207
+ "disabled"
208
+ ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
209
+ "value",
210
+ "query",
211
+ "option",
212
+ "kind",
213
+ "trigger"
214
+ ].includes(key));
215
+ const isValidationChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["status"] === "pristine" || detail["status"] === "pending" || detail["status"] === "valid" || detail["status"] === "warning" || detail["status"] === "error") && typeof detail["touched"] === "boolean" && typeof detail["dirty"] === "boolean" && Array.isArray(detail["issues"]) && detail["issues"].every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["message"] === "string" && (item["path"] === void 0 || Array.isArray(item["path"]) && item["path"].every((item) => true)) && (item["severity"] === void 0 || item["severity"] === "error" || item["severity"] === "warning") && Object.keys(item).every((key) => [
216
+ "message",
217
+ "path",
218
+ "severity"
219
+ ].includes(key))) && (detail["output"] === void 0 || true) && Object.keys(detail).every((key) => [
220
+ "status",
221
+ "touched",
222
+ "dirty",
223
+ "issues",
224
+ "output"
225
+ ].includes(key));
226
+ const isOptionsChangeDetail = (detail) => Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && Object.keys(item).every((key) => [
227
+ "id",
228
+ "value",
229
+ "label",
230
+ "group",
231
+ "disabled"
232
+ ].includes(key)));
233
+ const isAddItemDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["item"] !== null && typeof detail["item"] === "object" && !Array.isArray(detail["item"]) && typeof detail["item"]["id"] === "string" && typeof detail["item"]["value"] === "string" && typeof detail["item"]["label"] === "string" && (detail["item"]["group"] === void 0 || typeof detail["item"]["group"] === "string") && (detail["item"]["disabled"] === void 0 || typeof detail["item"]["disabled"] === "boolean") && Object.keys(detail["item"]).every((key) => [
234
+ "id",
235
+ "value",
236
+ "label",
237
+ "group",
238
+ "disabled"
239
+ ].includes(key)) && Number.isInteger(detail["index"]) && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
240
+ "item",
241
+ "index",
242
+ "trigger"
243
+ ].includes(key));
244
+ const isCreateItemDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["query", "trigger"].includes(key));
245
+ const dispatch = createDispatch(root, emit, {
246
+ checks: {
247
+ "query-change": isQueryChangeDetail,
248
+ "value-change": isValueChangeDetail,
249
+ "free-entry": isFreeEntryDetail,
250
+ "create-entry": isFreeEntryDetail,
251
+ "validation-change": isValidationChangeDetail,
252
+ "options-change": isOptionsChangeDetail,
253
+ "add-item": isAddItemDetail,
254
+ "remove-item": isAddItemDetail,
255
+ "create-item": isCreateItemDetail
431
256
  },
432
- state: new Proxy({}, {
433
- get: (_target, name) => typeof name === "string" ? read(name) : void 0,
434
- set: (_target, name, value) => typeof name === "string" && write(name, value)
435
- }),
257
+ modeled: ["query", "value"]
258
+ });
259
+ const { host, ready } = useComponentHost(controllerModule.default, {
260
+ root,
261
+ dispatch,
262
+ props,
436
263
  refs: {
437
- get field() {
438
- return fieldElement.value;
439
- },
440
- get input() {
441
- return inputElement.value;
442
- },
443
- get popup() {
444
- return popupElement.value;
445
- },
446
- get listbox() {
447
- return listboxElement.value;
448
- },
449
- get options() {
450
- return optionsElement.value;
451
- }
452
- },
453
- elements: new Proxy({}, { get: (_target, name) => {
454
- if (typeof name !== "string" || root.value === null) return void 0;
455
- return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
456
- } }),
457
- signal(initialValue) {
458
- const value = shallowRef(initialValue);
459
- return {
460
- get: () => value.value,
461
- set: (next) => {
462
- if (!Object.is(value.value, next)) value.value = next;
463
- },
464
- update: (next) => {
465
- const updated = next(value.value);
466
- if (!Object.is(value.value, updated)) value.value = updated;
467
- }
468
- };
264
+ field: fieldElement,
265
+ input: inputElement,
266
+ popup: popupElement,
267
+ listbox: listboxElement,
268
+ options: optionsElement
469
269
  },
470
- computed(compute) {
471
- const value = computed(compute);
472
- return { get: () => value.value };
473
- },
474
- effect(run) {
475
- const stop = watchEffect((onCleanup) => {
476
- const cleanup = run();
477
- if (typeof cleanup === "function") onCleanup(cleanup);
478
- }, { flush: "post" });
479
- stops.push(stop);
480
- return stop;
481
- },
482
- on(event, listener) {
483
- const element = root.value;
484
- element?.addEventListener(event, listener);
485
- const off = () => element?.removeEventListener(event, listener);
486
- stops.push(off);
487
- return off;
488
- },
489
- dispatch
490
- };
491
- let cleanup;
492
- let ready;
493
- onMounted(() => {
494
- ready = Promise.resolve(controllerModule.default(host)).then((result) => {
495
- cleanup = result;
496
- });
497
- });
498
- onBeforeUnmount(() => {
499
- for (const stop of stops.splice(0)) stop();
500
- if (typeof cleanup === "function") cleanup();
270
+ state: {
271
+ internalItems,
272
+ raw,
273
+ display,
274
+ selected,
275
+ expanded,
276
+ rows,
277
+ active,
278
+ loading,
279
+ helpOpen,
280
+ lookupError,
281
+ validation,
282
+ uid,
283
+ groups,
284
+ creatable,
285
+ createIndex,
286
+ message,
287
+ statusText,
288
+ validationStatus
289
+ }
501
290
  });
502
291
  __expose({
503
292
  validate: async (...args) => {
504
- await ready;
293
+ await ready();
505
294
  return controllerModule["validate"](host, ...args);
506
295
  },
507
296
  focusInput: async (...args) => {
508
- await ready;
297
+ await ready();
509
298
  return controllerModule["focusInput"](host, ...args);
510
299
  }
511
300
  });
@@ -634,7 +423,7 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
634
423
  class: normalizeClass(["option", { active: row.index === active.value }]),
635
424
  role: "option",
636
425
  id: `${uid.value}-option-${row.index}`,
637
- "aria-selected": row.value === selected.value,
426
+ "aria-selected": row.selected,
638
427
  "aria-disabled": row.disabled,
639
428
  "data-index": row.index
640
429
  }, [renderSlot(_ctx.$slots, `option-${row.id}`, {}, () => [createElementVNode("span", _hoisted_15, toDisplayString(row.label), 1)], true)], 10, _hoisted_14);
@@ -662,6 +451,6 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
662
451
  ], 16, _hoisted_1);
663
452
  };
664
453
  }
665
- }), [["__scopeId", "data-v-f1d9bb8a"]]);
454
+ }), [["__scopeId", "data-v-1aba7b21"]]);
666
455
  //#endregion
667
456
  export { UiCombobox_default as t };
@@ -19,6 +19,6 @@ var UiContainer_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
19
19
  return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-container" }, _ctx.$attrs, { "data-ui-container-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
20
20
  };
21
21
  }
22
- }), [["__scopeId", "data-v-4c7bb81d"]]);
22
+ }), [["__scopeId", "data-v-89d8ad17"]]);
23
23
  //#endregion
24
24
  export { UiContainer_default as t };