@abraca/nuxt 2.14.0 → 2.16.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 (44) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/runtime/assets/editor.css +3 -1
  3. package/dist/runtime/components/ACodeEditor.vue +16 -2
  4. package/dist/runtime/components/ANodePanel.vue +7 -5
  5. package/dist/runtime/components/aware/ASlider.d.vue.ts +1 -1
  6. package/dist/runtime/components/aware/ASlider.vue.d.ts +1 -1
  7. package/dist/runtime/components/docs/ADocsSearchButton.d.vue.ts +1 -1
  8. package/dist/runtime/components/docs/ADocsSearchButton.vue.d.ts +1 -1
  9. package/dist/runtime/components/editor/AColorPalettePopover.vue +97 -5
  10. package/dist/runtime/components/editor/AIconPickerPopover.vue +81 -3
  11. package/dist/runtime/components/editor/AMetaNumberStepper.d.vue.ts +40 -0
  12. package/dist/runtime/components/editor/AMetaNumberStepper.vue +214 -0
  13. package/dist/runtime/components/editor/AMetaNumberStepper.vue.d.ts +40 -0
  14. package/dist/runtime/components/registry/APluginBrowser.vue +18 -2
  15. package/dist/runtime/components/renderers/ACalendarRenderer.vue +7 -1
  16. package/dist/runtime/components/renderers/calendar/ACalendarToolbar.d.vue.ts +2 -2
  17. package/dist/runtime/components/renderers/calendar/ACalendarToolbar.vue.d.ts +2 -2
  18. package/dist/runtime/components/renderers/media/MediaTransportBar.d.vue.ts +2 -2
  19. package/dist/runtime/components/renderers/media/MediaTransportBar.vue.d.ts +2 -2
  20. package/dist/runtime/components/settings/APluginInstallDialog.d.vue.ts +39 -0
  21. package/dist/runtime/components/settings/APluginInstallDialog.vue +254 -0
  22. package/dist/runtime/components/settings/APluginInstallDialog.vue.d.ts +39 -0
  23. package/dist/runtime/components/settings/APluginsTabInstalled.d.vue.ts +7 -0
  24. package/dist/runtime/components/settings/APluginsTabInstalled.vue +413 -0
  25. package/dist/runtime/components/settings/APluginsTabInstalled.vue.d.ts +7 -0
  26. package/dist/runtime/components/settings/APluginsTabPending.d.vue.ts +24 -0
  27. package/dist/runtime/components/settings/APluginsTabPending.vue +248 -0
  28. package/dist/runtime/components/settings/APluginsTabPending.vue.d.ts +24 -0
  29. package/dist/runtime/components/settings/ASettingsPluginsPanel.d.vue.ts +14 -1
  30. package/dist/runtime/components/settings/ASettingsPluginsPanel.vue +34 -80
  31. package/dist/runtime/components/settings/ASettingsPluginsPanel.vue.d.ts +14 -1
  32. package/dist/runtime/composables/useDeclinedSpacePlugins.d.ts +7 -0
  33. package/dist/runtime/composables/useDeclinedSpacePlugins.js +24 -0
  34. package/dist/runtime/composables/useLoadTimePending.d.ts +29 -0
  35. package/dist/runtime/composables/useLoadTimePending.js +37 -0
  36. package/dist/runtime/composables/usePluginCatalog.d.ts +5 -1
  37. package/dist/runtime/composables/usePluginCatalog.js +34 -0
  38. package/dist/runtime/composables/useTouchDrag.d.ts +21 -4
  39. package/dist/runtime/composables/useTouchDrag.js +30 -0
  40. package/dist/runtime/composables/useUploadedPluginStore.d.ts +43 -0
  41. package/dist/runtime/composables/useUploadedPluginStore.js +66 -0
  42. package/dist/runtime/extensions/views/MetaFieldView.vue +17 -28
  43. package/dist/runtime/plugin-abracadabra.client.js +48 -1
  44. package/package.json +1 -1
@@ -220,11 +220,58 @@ export default defineNuxtPlugin({
220
220
  const storedExternal = JSON.parse(
221
221
  localStorage.getItem(STORAGE_KEY_EXTERNAL_PLUGINS) ?? "[]"
222
222
  );
223
+ const [
224
+ { _resolveIdbPluginUrl },
225
+ { _enqueueLoadTimePending, _clearLoadTimePending }
226
+ ] = await Promise.all([
227
+ import("./composables/useUploadedPluginStore.js"),
228
+ import("./composables/useLoadTimePending.js")
229
+ ]);
230
+ async function refetchManifest(url) {
231
+ try {
232
+ const manifestUrl = url.replace(/\/[^/]+$/, (m2) => `${m2.replace(/\.[^.]+$/, "")}.manifest.json`);
233
+ const res = await fetch(manifestUrl, { cache: "no-store" });
234
+ if (!res.ok) return null;
235
+ const m = await res.json();
236
+ if (typeof m.version !== "string") return null;
237
+ return { version: m.version, required: m.capabilities?.required ?? [] };
238
+ } catch {
239
+ return null;
240
+ }
241
+ }
223
242
  for (const entry of storedExternal.filter((p) => p.enabled)) {
224
243
  try {
244
+ const origin = entry.origin ?? "url";
245
+ if (origin !== "registry" && origin !== "upload" && !entry.url.startsWith("idb-plugin:")) {
246
+ const observed = await refetchManifest(entry.url);
247
+ if (observed) {
248
+ const acked = new Set(entry.acknowledgedCapabilities ?? []);
249
+ const grew = observed.required.filter((c) => !acked.has(c));
250
+ const versionChanged = entry.acknowledgedVersion !== observed.version;
251
+ const neverAcked = !entry.trustAcknowledgedAt;
252
+ if (neverAcked || versionChanged || grew.length > 0) {
253
+ _enqueueLoadTimePending({
254
+ url: entry.url,
255
+ id: entry.id ?? entry.name ?? entry.url,
256
+ observedVersion: observed.version,
257
+ observedRequired: observed.required,
258
+ reason: neverAcked ? "never-acknowledged" : grew.length > 0 ? "capabilities-grew" : "version-changed",
259
+ queuedAt: Date.now()
260
+ });
261
+ continue;
262
+ }
263
+ _clearLoadTimePending(entry.url);
264
+ }
265
+ }
266
+ let importUrl = entry.url;
267
+ if (importUrl.startsWith("idb-plugin:")) {
268
+ const resolved = await _resolveIdbPluginUrl(importUrl);
269
+ if (!resolved) throw new Error("Uploaded plugin bundle missing from storage \u2014 was it cleared?");
270
+ importUrl = resolved;
271
+ }
225
272
  const mod = await import(
226
273
  /* @vite-ignore */
227
- entry.url
274
+ importUrl
228
275
  );
229
276
  const plugin = mod.default ?? mod;
230
277
  if (plugin?.name) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abraca/nuxt",
3
- "version": "2.14.0",
3
+ "version": "2.16.0",
4
4
  "description": "First-class Nuxt module for the Abracadabra CRDT collaboration platform",
5
5
  "repository": "abracadabra/abracadabra-nuxt",
6
6
  "license": "MIT",