@shwfed/nuxt 0.10.14 → 0.11.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 (80) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +1 -0
  3. package/dist/runtime/components/app.d.vue.ts +2 -1
  4. package/dist/runtime/components/app.vue.d.ts +2 -1
  5. package/dist/runtime/components/button.d.vue.ts +67 -4
  6. package/dist/runtime/components/button.vue +29 -4
  7. package/dist/runtime/components/button.vue.d.ts +67 -4
  8. package/dist/runtime/components/component-config.d.ts +12 -0
  9. package/dist/runtime/components/component-config.js +22 -0
  10. package/dist/runtime/components/fields.d.vue.ts +9 -5
  11. package/dist/runtime/components/fields.vue +14 -5
  12. package/dist/runtime/components/fields.vue.d.ts +9 -5
  13. package/dist/runtime/components/markdown.d.vue.ts +19 -9
  14. package/dist/runtime/components/markdown.vue +15 -3
  15. package/dist/runtime/components/markdown.vue.d.ts +19 -9
  16. package/dist/runtime/components/menu-tabs.d.vue.ts +14 -4
  17. package/dist/runtime/components/menu-tabs.vue +15 -3
  18. package/dist/runtime/components/menu-tabs.vue.d.ts +14 -4
  19. package/dist/runtime/components/modal.d.vue.ts +3 -1
  20. package/dist/runtime/components/modal.vue +3 -1
  21. package/dist/runtime/components/modal.vue.d.ts +3 -1
  22. package/dist/runtime/components/table.d.vue.ts +8 -3
  23. package/dist/runtime/components/table.vue +28 -2
  24. package/dist/runtime/components/table.vue.d.ts +8 -3
  25. package/dist/runtime/components/ui/app/App.d.vue.ts +7 -5
  26. package/dist/runtime/components/ui/app/App.vue +23 -8
  27. package/dist/runtime/components/ui/app/App.vue.d.ts +7 -5
  28. package/dist/runtime/components/ui/app/OverlayHost.d.vue.ts +3 -0
  29. package/dist/runtime/components/ui/app/OverlayHost.vue +91 -0
  30. package/dist/runtime/components/ui/app/OverlayHost.vue.d.ts +3 -0
  31. package/dist/runtime/components/ui/button-configurator/ButtonConfiguratorDialog.d.vue.ts +56 -0
  32. package/dist/runtime/components/ui/button-configurator/ButtonConfiguratorDialog.vue +12 -4
  33. package/dist/runtime/components/ui/button-configurator/ButtonConfiguratorDialog.vue.d.ts +56 -0
  34. package/dist/runtime/components/ui/buttons/Buttons.d.vue.ts +62 -5
  35. package/dist/runtime/components/ui/buttons/Buttons.vue +71 -7
  36. package/dist/runtime/components/ui/buttons/Buttons.vue.d.ts +62 -5
  37. package/dist/runtime/components/ui/buttons/schema.d.ts +562 -2
  38. package/dist/runtime/components/ui/buttons/schema.js +24 -23
  39. package/dist/runtime/components/ui/drawer/Drawer.d.vue.ts +4 -4
  40. package/dist/runtime/components/ui/drawer/Drawer.vue.d.ts +4 -4
  41. package/dist/runtime/components/ui/fields/Fields.d.vue.ts +10 -2
  42. package/dist/runtime/components/ui/fields/Fields.vue +12 -3
  43. package/dist/runtime/components/ui/fields/Fields.vue.d.ts +10 -2
  44. package/dist/runtime/components/ui/fields/schema.d.ts +464 -0
  45. package/dist/runtime/components/ui/fields/schema.js +15 -2
  46. package/dist/runtime/components/ui/fields-configurator/FieldsConfiguratorDialog.d.vue.ts +4 -0
  47. package/dist/runtime/components/ui/fields-configurator/FieldsConfiguratorDialog.vue +10 -4
  48. package/dist/runtime/components/ui/fields-configurator/FieldsConfiguratorDialog.vue.d.ts +4 -0
  49. package/dist/runtime/components/ui/markdown/Markdown.d.vue.ts +18 -8
  50. package/dist/runtime/components/ui/markdown/Markdown.vue +13 -3
  51. package/dist/runtime/components/ui/markdown/Markdown.vue.d.ts +18 -8
  52. package/dist/runtime/components/ui/markdown/schema.d.ts +51 -6
  53. package/dist/runtime/components/ui/markdown/schema.js +15 -2
  54. package/dist/runtime/components/ui/markdown-configurator/MarkdownConfiguratorDialog.d.vue.ts +16 -7
  55. package/dist/runtime/components/ui/markdown-configurator/MarkdownConfiguratorDialog.vue +12 -7
  56. package/dist/runtime/components/ui/markdown-configurator/MarkdownConfiguratorDialog.vue.d.ts +16 -7
  57. package/dist/runtime/components/ui/menu-tabs/MenuTabs.d.vue.ts +14 -4
  58. package/dist/runtime/components/ui/menu-tabs/MenuTabs.vue +16 -5
  59. package/dist/runtime/components/ui/menu-tabs/MenuTabs.vue.d.ts +14 -4
  60. package/dist/runtime/components/ui/menu-tabs/schema.d.ts +42 -5
  61. package/dist/runtime/components/ui/menu-tabs/schema.js +13 -12
  62. package/dist/runtime/components/ui/menu-tabs-configurator/MenuTabsConfiguratorDialog.d.vue.ts +12 -3
  63. package/dist/runtime/components/ui/menu-tabs-configurator/MenuTabsConfiguratorDialog.vue +9 -5
  64. package/dist/runtime/components/ui/menu-tabs-configurator/MenuTabsConfiguratorDialog.vue.d.ts +12 -3
  65. package/dist/runtime/components/ui/table/Table.d.vue.ts +6 -2
  66. package/dist/runtime/components/ui/table/Table.vue +18 -2
  67. package/dist/runtime/components/ui/table/Table.vue.d.ts +6 -2
  68. package/dist/runtime/components/ui/table/schema.d.ts +239 -2
  69. package/dist/runtime/components/ui/table/schema.js +15 -6
  70. package/dist/runtime/components/ui/table-configurator/TableConfiguratorDialog.d.vue.ts +4 -0
  71. package/dist/runtime/components/ui/table-configurator/TableConfiguratorDialog.vue +2 -1
  72. package/dist/runtime/components/ui/table-configurator/TableConfiguratorDialog.vue.d.ts +4 -0
  73. package/dist/runtime/composables/useOverlay.d.ts +86 -0
  74. package/dist/runtime/composables/useOverlay.js +201 -0
  75. package/dist/runtime/layouts/default.d.vue.ts +2 -1
  76. package/dist/runtime/layouts/default.vue.d.ts +2 -1
  77. package/dist/runtime/plugins/overlay/index.d.ts +6 -0
  78. package/dist/runtime/plugins/overlay/index.js +12 -0
  79. package/dist/runtime/plugins/toast/index.d.ts +4 -4
  80. package/package.json +1 -1
@@ -0,0 +1,201 @@
1
+ import { Context, Deferred, Effect } from "effect";
2
+ import { reactive, ref } from "vue";
3
+ export class OverlayService extends Context.Tag("shwfed/OverlayService")() {
4
+ }
5
+ function createAborted(reason) {
6
+ return {
7
+ _tag: "OverlayAborted",
8
+ reason
9
+ };
10
+ }
11
+ function createDefinitionNotFoundError(definitionId) {
12
+ return {
13
+ _tag: "OverlayDefinitionNotFoundError",
14
+ definitionId
15
+ };
16
+ }
17
+ export function isOverlayAborted(value) {
18
+ return typeof value === "object" && value !== null && Reflect.get(value, "_tag") === "OverlayAborted" && typeof Reflect.get(value, "reason") === "string";
19
+ }
20
+ function createOverlayRuntime() {
21
+ const definitions = reactive({});
22
+ const sessions = ref([]);
23
+ function findSessionIndex(sessionId) {
24
+ return sessions.value.findIndex((session) => session.sessionId === sessionId);
25
+ }
26
+ function getDefinition(definitionId) {
27
+ return Reflect.get(definitions, definitionId);
28
+ }
29
+ function getSession(sessionId) {
30
+ return sessions.value.find((session) => session.sessionId === sessionId);
31
+ }
32
+ function removeSession(sessionId) {
33
+ const index = findSessionIndex(sessionId);
34
+ if (index < 0) {
35
+ return void 0;
36
+ }
37
+ const [session] = sessions.value.splice(index, 1);
38
+ return session;
39
+ }
40
+ function closeInternal(sessionId, value) {
41
+ return Effect.gen(function* () {
42
+ const session = removeSession(sessionId);
43
+ if (!session) {
44
+ return;
45
+ }
46
+ yield* Deferred.succeed(session.deferred, value);
47
+ });
48
+ }
49
+ function closeDefinitionSessions(definitionId, reason) {
50
+ const targetSessions = sessions.value.filter((session) => session.definitionId === definitionId).map((session) => session.sessionId);
51
+ for (const sessionId of targetSessions) {
52
+ void Effect.runPromise(closeInternal(sessionId, createAborted(reason)));
53
+ }
54
+ }
55
+ function registerDefinition(definition) {
56
+ Reflect.set(definitions, definition.definitionId, definition);
57
+ }
58
+ function unregisterDefinition(definitionId, ownerId) {
59
+ const definition = getDefinition(definitionId);
60
+ if (!definition) {
61
+ return;
62
+ }
63
+ if (ownerId !== void 0 && definition.ownerId !== ownerId) {
64
+ return;
65
+ }
66
+ Reflect.deleteProperty(definitions, definitionId);
67
+ closeDefinitionSessions(definitionId, ownerId === void 0 ? "definition" : "owner");
68
+ }
69
+ function syncDefinitions(ownerId, nextDefinitions) {
70
+ const nextIds = nextDefinitions.map((definition) => definition.definitionId);
71
+ const currentIds = Object.values(definitions).filter((definition) => definition.ownerId === ownerId).map((definition) => definition.definitionId);
72
+ for (const definitionId of currentIds) {
73
+ if (!nextIds.includes(definitionId)) {
74
+ unregisterDefinition(definitionId, ownerId);
75
+ }
76
+ }
77
+ for (const definition of nextDefinitions) {
78
+ registerDefinition(definition);
79
+ }
80
+ }
81
+ function patchSync(sessionId, patch) {
82
+ const session = getSession(sessionId);
83
+ if (!session) {
84
+ return;
85
+ }
86
+ if (patch.shell) {
87
+ session.shell = {
88
+ ...session.shell,
89
+ ...patch.shell
90
+ };
91
+ }
92
+ if (patch.props) {
93
+ session.props = {
94
+ ...session.props,
95
+ ...patch.props
96
+ };
97
+ }
98
+ }
99
+ function closeSync(sessionId, value) {
100
+ void Effect.runPromise(closeInternal(sessionId, value));
101
+ }
102
+ function closeTopSync() {
103
+ const topSession = sessions.value.at(-1);
104
+ if (!topSession) {
105
+ return;
106
+ }
107
+ closeSync(topSession.sessionId, createAborted("dismiss"));
108
+ }
109
+ function closeAllSync() {
110
+ const sessionIds = sessions.value.map((session) => session.sessionId);
111
+ for (const sessionId of sessionIds) {
112
+ closeSync(sessionId, createAborted("close-all"));
113
+ }
114
+ }
115
+ function createHandle(session) {
116
+ return {
117
+ sessionId: session.sessionId,
118
+ patch: (patch) => Effect.sync(() => {
119
+ patchSync(session.sessionId, patch);
120
+ }),
121
+ close: (value) => closeInternal(session.sessionId, value),
122
+ result: Deferred.await(session.deferred)
123
+ };
124
+ }
125
+ const runtime = {
126
+ get definitions() {
127
+ return definitions;
128
+ },
129
+ get sessions() {
130
+ return sessions.value;
131
+ },
132
+ get topSession() {
133
+ return sessions.value.at(-1);
134
+ },
135
+ registerDefinition,
136
+ unregisterDefinition,
137
+ syncDefinitions,
138
+ isOpen: (sessionId) => findSessionIndex(sessionId) >= 0,
139
+ patchSync,
140
+ closeSync,
141
+ closeTopSync,
142
+ closeAllSync,
143
+ open: (definitionId, options) => Effect.acquireRelease(
144
+ Effect.gen(function* () {
145
+ const definition = getDefinition(definitionId);
146
+ if (!definition) {
147
+ return yield* Effect.fail(createDefinitionNotFoundError(definitionId));
148
+ }
149
+ const deferred = yield* Deferred.make();
150
+ const session = {
151
+ sessionId: crypto.randomUUID(),
152
+ definitionId,
153
+ shell: {
154
+ ...definition.shell,
155
+ ...options?.shell
156
+ },
157
+ props: {
158
+ ...options?.props
159
+ },
160
+ deferred
161
+ };
162
+ sessions.value.push(session);
163
+ return createHandle(session);
164
+ }),
165
+ (handle) => closeInternal(handle.sessionId, createAborted("scope"))
166
+ ),
167
+ patch: (sessionId, patch) => Effect.sync(() => {
168
+ patchSync(sessionId, patch);
169
+ }),
170
+ close: (sessionId, value) => closeInternal(sessionId, value),
171
+ closeTop: () => Effect.sync(() => {
172
+ closeTopSync();
173
+ }),
174
+ closeAll: () => Effect.sync(() => {
175
+ closeAllSync();
176
+ })
177
+ };
178
+ return runtime;
179
+ }
180
+ const overlayRuntime = createOverlayRuntime();
181
+ export function useOverlay() {
182
+ return overlayRuntime;
183
+ }
184
+ export function provideOverlay(effect, runtime = overlayRuntime) {
185
+ return effect.pipe(Effect.provideService(OverlayService, runtime));
186
+ }
187
+ export function openOverlay(definitionId, options) {
188
+ return Effect.flatMap(OverlayService, (overlay) => overlay.open(definitionId, options));
189
+ }
190
+ export function patchOverlay(sessionId, patch) {
191
+ return Effect.flatMap(OverlayService, (overlay) => overlay.patch(sessionId, patch));
192
+ }
193
+ export function closeOverlay(sessionId, value) {
194
+ return Effect.flatMap(OverlayService, (overlay) => overlay.close(sessionId, value));
195
+ }
196
+ export function closeTopOverlay() {
197
+ return Effect.flatMap(OverlayService, (overlay) => overlay.closeTop());
198
+ }
199
+ export function closeAllOverlays() {
200
+ return Effect.flatMap(OverlayService, (overlay) => overlay.closeAll());
201
+ }
@@ -1,6 +1,7 @@
1
1
  import type { Scope } from 'effect';
2
+ import type { OverlayService as OverlayRuntimeService } from '../composables/useOverlay.js';
2
3
  import type { Sidebar as SidebarType } from '../composables/useNavigationTabs.js';
3
- type CommandEffect = import('effect').Effect.Effect<void>;
4
+ type CommandEffect = import('effect').Effect.Effect<void, never, Scope.Scope | OverlayRuntimeService>;
4
5
  type ProfileCommandInputItem = Readonly<{
5
6
  id: string | number;
6
7
  title: string;
@@ -1,6 +1,7 @@
1
1
  import type { Scope } from 'effect';
2
+ import type { OverlayService as OverlayRuntimeService } from '../composables/useOverlay.js';
2
3
  import type { Sidebar as SidebarType } from '../composables/useNavigationTabs.js';
3
- type CommandEffect = import('effect').Effect.Effect<void>;
4
+ type CommandEffect = import('effect').Effect.Effect<void, never, Scope.Scope | OverlayRuntimeService>;
4
5
  type ProfileCommandInputItem = Readonly<{
5
6
  id: string | number;
6
7
  title: string;
@@ -0,0 +1,6 @@
1
+ declare const _default: import("#app").Plugin<{
2
+ overlay: import("../../composables/useOverlay.js").OverlayRuntime;
3
+ }> & import("#app").ObjectPlugin<{
4
+ overlay: import("../../composables/useOverlay.js").OverlayRuntime;
5
+ }>;
6
+ export default _default;
@@ -0,0 +1,12 @@
1
+ import { defineNuxtPlugin } from "#app";
2
+ import { useOverlay } from "../../composables/useOverlay.js";
3
+ export default defineNuxtPlugin({
4
+ name: "shwfed-nuxt:overlay",
5
+ setup: () => {
6
+ return {
7
+ provide: {
8
+ overlay: useOverlay()
9
+ }
10
+ };
11
+ }
12
+ });
@@ -9,6 +9,8 @@ declare const _default: import("#app").Plugin<{
9
9
  promise: <ToastData>(promise: Promise<ToastData> | (() => Promise<ToastData>), data?: ({
10
10
  id?: number | string | undefined;
11
11
  icon?: import("vue").Component | undefined;
12
+ dismissible?: boolean | undefined;
13
+ duration?: number | undefined;
12
14
  class?: string | undefined;
13
15
  style?: import("vue").CSSProperties | undefined;
14
16
  cancel?: (import("vue-sonner").Action | import("vue").Component) | undefined;
@@ -18,8 +20,6 @@ declare const _default: import("#app").Plugin<{
18
20
  richColors?: boolean | undefined;
19
21
  invert?: boolean | undefined;
20
22
  closeButton?: boolean | undefined;
21
- dismissible?: boolean | undefined;
22
- duration?: number | undefined;
23
23
  important?: boolean | undefined;
24
24
  action?: (import("vue-sonner").Action | import("vue").Component) | undefined;
25
25
  onDismiss?: ((toast: import("vue-sonner").ToastT) => void) | undefined;
@@ -62,6 +62,8 @@ declare const _default: import("#app").Plugin<{
62
62
  promise: <ToastData>(promise: Promise<ToastData> | (() => Promise<ToastData>), data?: ({
63
63
  id?: number | string | undefined;
64
64
  icon?: import("vue").Component | undefined;
65
+ dismissible?: boolean | undefined;
66
+ duration?: number | undefined;
65
67
  class?: string | undefined;
66
68
  style?: import("vue").CSSProperties | undefined;
67
69
  cancel?: (import("vue-sonner").Action | import("vue").Component) | undefined;
@@ -71,8 +73,6 @@ declare const _default: import("#app").Plugin<{
71
73
  richColors?: boolean | undefined;
72
74
  invert?: boolean | undefined;
73
75
  closeButton?: boolean | undefined;
74
- dismissible?: boolean | undefined;
75
- duration?: number | undefined;
76
76
  important?: boolean | undefined;
77
77
  action?: (import("vue-sonner").Action | import("vue").Component) | undefined;
78
78
  onDismiss?: ((toast: import("vue-sonner").ToastT) => void) | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shwfed/nuxt",
3
- "version": "0.10.14",
3
+ "version": "0.11.0",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "type": "module",