@mulmoclaude/collection-plugin 0.7.5 → 0.8.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.
package/dist/style.css CHANGED
@@ -2072,6 +2072,10 @@
2072
2072
  color: var(--color-indigo-600);
2073
2073
  }
2074
2074
 
2075
+ .group-hover\:text-indigo-800:is(:where(.group):hover *) {
2076
+ color: var(--color-indigo-800);
2077
+ }
2078
+
2075
2079
  .group-hover\:text-indigo-950:is(:where(.group):hover *) {
2076
2080
  color: var(--color-indigo-950);
2077
2081
  }
@@ -2110,6 +2114,16 @@
2110
2114
  }
2111
2115
  }
2112
2116
 
2117
+ .hover\:bg-indigo-50\/30:hover {
2118
+ background-color: #eef2ff4d;
2119
+ }
2120
+
2121
+ @supports (color: color-mix(in lab, red, red)) {
2122
+ .hover\:bg-indigo-50\/30:hover {
2123
+ background-color: color-mix(in oklab, var(--color-indigo-50) 30%, transparent);
2124
+ }
2125
+ }
2126
+
2113
2127
  .hover\:bg-indigo-100:hover {
2114
2128
  background-color: var(--color-indigo-100);
2115
2129
  }
@@ -0,0 +1,9 @@
1
+ import type { BacklinksView } from "@mulmoclaude/core/collection";
2
+ type __VLS_Props = {
3
+ view: BacklinksView;
4
+ fieldKey: string;
5
+ };
6
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
9
+ //# sourceMappingURL=CollectionBacklinksView.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollectionBacklinksView.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/CollectionBacklinksView.vue"],"names":[],"mappings":"AA4DA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,KAAK,WAAW,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAuI7D,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionKanbanView.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/CollectionKanbanView.vue"],"names":[],"mappings":"AA2NA,OAAO,KAAK,EAAE,wBAAwB,IAAI,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAYnI,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;gFAC4E;IAC5E,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC1C,CAAC;AA+UF,QAAA,MAAM,YAAY;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"CollectionKanbanView.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/CollectionKanbanView.vue"],"names":[],"mappings":"AAoOA,OAAO,KAAK,EAAE,wBAAwB,IAAI,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAYnI,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,gBAAgB,CAAC;IACzB,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;gFAC4E;IAC5E,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC1C,CAAC;AAwVF,QAAA,MAAM,YAAY;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -29,7 +29,18 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
29
29
  submit: () => any;
30
30
  cancel: () => any;
31
31
  edit: () => any;
32
- runAction: (action: CollectionAction) => any;
32
+ runAction: (action: {
33
+ id: string;
34
+ label: string;
35
+ kind: "chat";
36
+ role: string;
37
+ template: string;
38
+ icon?: string | undefined;
39
+ when?: {
40
+ field: string;
41
+ in: string[];
42
+ } | undefined;
43
+ }) => any;
33
44
  itemChat: (message: string) => any;
34
45
  "update:editing": (value: EditState | null) => any;
35
46
  }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
@@ -38,7 +49,18 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
38
49
  onSubmit?: (() => any) | undefined;
39
50
  onCancel?: (() => any) | undefined;
40
51
  onEdit?: (() => any) | undefined;
41
- onRunAction?: ((action: CollectionAction) => any) | undefined;
52
+ onRunAction?: ((action: {
53
+ id: string;
54
+ label: string;
55
+ kind: "chat";
56
+ role: string;
57
+ template: string;
58
+ icon?: string | undefined;
59
+ when?: {
60
+ field: string;
61
+ in: string[];
62
+ } | undefined;
63
+ }) => any) | undefined;
42
64
  onItemChat?: ((message: string) => any) | undefined;
43
65
  "onUpdate:editing"?: ((value: EditState | null) => any) | undefined;
44
66
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionRecordPanel.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/CollectionRecordPanel.vue"],"names":[],"mappings":"AAmsBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EAEd,SAAS,EAEV,MAAM,8BAA8B,CAAC;AAQtC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,8CAA8C;IAC9C,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,qEAAqE;IACrE,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,gDAAgD;IAChD,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA8JF,KAAK,gBAAgB,GAAG;IACxB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3B,CAAC;AAKF,KAAK,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CAAC;AA27CxD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"CollectionRecordPanel.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/CollectionRecordPanel.vue"],"names":[],"mappings":"AA8sBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EAEd,SAAS,EAEV,MAAM,8BAA8B,CAAC;AAQtC,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,8CAA8C;IAC9C,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,qEAAqE;IACrE,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,gDAAgD;IAChD,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,8DAA8D;IAC9D,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAoKF,KAAK,gBAAgB,GAAG;IACxB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;CAC3B,CAAC;AAKF,KAAK,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAy8CxD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionView.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/CollectionView.vue"],"names":[],"mappings":"AA20EA,OAAO,EAML,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAqC/B;;;;;;;;;6CAS6C;AAC7C,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C;;;;;uBAKmB;IACnB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;4EAGwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;wDAGoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;4EACwE;IACxE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAqzHF,QAAA,MAAM,YAAY;;;cA1yHiB,eAAe;qBAAe,MAAM;oBAAc,MAAM;;;;;cAAxD,eAAe;qBAAe,MAAM;oBAAc,MAAM;;kFA6yHzF,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"CollectionView.vue.d.ts","sourceRoot":"","sources":["../../../src/vue/components/CollectionView.vue"],"names":[],"mappings":"AA60EA,OAAO,EAML,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAqC/B;;;;;;;;;6CAS6C;AAC7C,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C;;;;;uBAKmB;IACnB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;4EAGwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;wDAGoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;4EACwE;IACxE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAuzHF,QAAA,MAAM,YAAY;;;cA5yHiB,eAAe;qBAAe,MAAM;oBAAc,MAAM;;;;;cAAxD,eAAe;qBAAe,MAAM;oBAAc,MAAM;;kFA+yHzF,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -1,5 +1,5 @@
1
- import { type Ref } from "vue";
2
- import type { CollectionDetail, CollectionItem, CollectionSchema, CollectionFieldSpec as FieldSpec, CollectionFieldType as FieldType, EmbedCache, EmbedView, RefCache, RefOption, RefRecordCache } from "@mulmoclaude/core/collection";
1
+ import type { Ref } from "vue";
2
+ import type { BacklinksView, CollectionDetail, CollectionItem, CollectionSchema, CollectionFieldSpec as FieldSpec, CollectionFieldType as FieldType, EmbedCache, EmbedView, RefCache, RefOption, RefRecordCache } from "@mulmoclaude/core/collection";
3
3
  export interface CollectionRendering {
4
4
  refCache: Ref<RefCache>;
5
5
  refRecordCache: Ref<RefRecordCache>;
@@ -10,6 +10,7 @@ export interface CollectionRendering {
10
10
  refOptions: (targetSlug: string) => RefOption[];
11
11
  embedOptions: (targetSlug: string) => RefOption[];
12
12
  embedViewsFor: (record: CollectionItem | null) => Record<string, EmbedView>;
13
+ backlinksViewsFor: (record: CollectionItem | null) => Record<string, BacklinksView>;
13
14
  resolveCurrency: (field: FieldSpec, record: CollectionItem | null | undefined) => string | undefined;
14
15
  currencySymbol: (currency: string | undefined) => string;
15
16
  formatMoney: (value: unknown, currency: string | undefined, displayLocale: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"useCollectionRendering.d.ts","sourceRoot":"","sources":["../../src/vue/useCollectionRendering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useCollectionRendering.d.ts","sourceRoot":"","sources":["../../src/vue/useCollectionRendering.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,9 @@ export declare function detailText(value: unknown): string;
6
6
  export declare function formatCell(value: unknown, type: FieldType): string;
7
7
  /** Resolve the ISO 4217 code for a money field: a per-record
8
8
  * `currencyField` (when present and non-blank) wins over the field's
9
- * literal `currency`. */
9
+ * literal `currency`. Only `money` / `derived` variants carry currency
10
+ * keys; any other field resolves to undefined (the formatter's USD
11
+ * fallback), as before. */
10
12
  export declare function resolveCurrency(field: FieldSpec, record: CollectionItem | null | undefined): string | undefined;
11
13
  export declare function formatMoney(value: unknown, currency: string | undefined, displayLocale: string): string;
12
14
  export declare function currencySymbolForLocale(currency: string | undefined, locale: string): string;
@@ -17,7 +19,18 @@ export declare function hasTableRows(value: unknown): boolean;
17
19
  export declare function displayFieldFor(fields: Record<string, FieldSpec>, primaryKey: string): string;
18
20
  export declare function uniqueRefTargets(schema: CollectionSchema): string[];
19
21
  export declare function uniqueEmbedTargets(schema: CollectionSchema): string[];
22
+ /** Slugs of every SOURCE collection a `backlinks` field reverses over.
23
+ * Top-level only, like `embed` (the schema rejects `backlinks` inside a
24
+ * table's `of`). Mirrors the server's `uniqueBacklinkSources`. */
25
+ export declare function uniqueBacklinkSources(schema: CollectionSchema): string[];
20
26
  export declare function buildRefDisplayMap(detail: CollectionDetailResponse): RefDisplayMap;
27
+ /** Index DERIVED records by primary key — the client mirror of the
28
+ * server's `loadTarget` indexing: string non-empty ids only, one record
29
+ * per id (a duplicate keeps the LAST record in its FIRST position —
30
+ * plain-object key semantics). Shared by the ref-record cache and the
31
+ * backlinks view so every client consumer agrees with server enrichment
32
+ * on which source records exist. */
33
+ export declare function derivedRecordsById(schema: CollectionSchema, items: CollectionItem[]): RefRecordMap;
21
34
  export declare function buildRefRecordMap(detail: CollectionDetailResponse): RefRecordMap;
22
35
  export declare function sortedRefOptions(map: RefDisplayMap): RefOption[];
23
36
  /** Dropdown options for an `embed` field's per-record picker: every
@@ -1 +1 @@
1
- {"version":3,"file":"useCollectionRendering.helpers.d.ts","sourceRoot":"","sources":["../../src/vue/useCollectionRendering.helpers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,IAAI,SAAS,EAChC,mBAAmB,IAAI,SAAS,EAChC,aAAa,EACb,SAAS,EACT,YAAY,EACb,MAAM,8BAA8B,CAAC;AAWtC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAIpE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAOpD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAErD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAOlE;AAED;;0BAE0B;AAC1B,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAM/G;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAUvG;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ5F;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAGnE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED;qEACqE;AACrE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAI7F;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAYnE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAQrE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,aAAa,CAWlF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,YAAY,CAQhF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE,CAIhE;AAED;;yEAEyE;AACzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,CAYhG"}
1
+ {"version":3,"file":"useCollectionRendering.helpers.d.ts","sourceRoot":"","sources":["../../src/vue/useCollectionRendering.helpers.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,wBAAwB,EACxB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,IAAI,SAAS,EAChC,mBAAmB,IAAI,SAAS,EAChC,aAAa,EACb,SAAS,EACT,YAAY,EACb,MAAM,8BAA8B,CAAC;AAWtC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAIpE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAOpD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAErD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAOlE;AAED;;;;4BAI4B;AAC5B,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO/G;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAUvG;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ5F;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAGnE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEpD;AAED;qEACqE;AACrE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAI7F;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAYnE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAQrE;AAED;;mEAEmE;AACnE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAMxE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,aAAa,CAWlF;AAED;;;;;qCAKqC;AACrC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,YAAY,CAOlG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,YAAY,CAEhF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,EAAE,CAIhE;AAED;;yEAEyE;AACzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,CAYhG"}
@@ -0,0 +1,32 @@
1
+ import type { BacklinksView, CollectionItem, CollectionSchema, CollectionFieldSpec as FieldSpec, EmbedCache, EmbedView, RefCache, RefOption, RefRecordCache } from "@mulmoclaude/core/collection";
2
+ export declare function lookupRefDisplay(refCache: RefCache, targetSlug: string, itemSlug: string): string;
3
+ export declare function refOptionsFor(refCache: RefCache, targetSlug: string): RefOption[];
4
+ /** Dropdown options for an `embed` field's per-record picker (`idField`):
5
+ * every record in the target collection, labelled by its name/title (or
6
+ * primary key). Built from `embedCache` so it works for embed targets
7
+ * that aren't also `ref` targets (the profile collection, say). */
8
+ export declare function embedOptionsFor(embedCache: EmbedCache, targetSlug: string): RefOption[];
9
+ export declare function resolveEmbed(field: FieldSpec, record: CollectionItem | null, embedCache: EmbedCache): {
10
+ schema: CollectionSchema | null;
11
+ item: CollectionItem | null;
12
+ };
13
+ export declare function formatEmbedValue(field: FieldSpec, value: unknown, record: CollectionItem | null, locale: string): string;
14
+ /** Build the read-only embed view-models for one record. A function of the
15
+ * open record (not a bare computed) because a per-record `idField` embed
16
+ * resolves a different target per row. `schema` is the OPEN collection's
17
+ * schema (null when no collection is loaded → no views). */
18
+ export declare function buildEmbedViews(schema: CollectionSchema | null, embedCache: EmbedCache, record: CollectionItem | null, locale: string): Record<string, EmbedView>;
19
+ /** Build the read-only backlinks view-models for one record: for each
20
+ * `backlinks` field, the rows of `from` whose `via` points at the open
21
+ * record (matched via the SHARED `backlinkRows`, on source records
22
+ * derived exactly like the server's enrichment — so a `display`/`filter`
23
+ * on a derived column such as an invoice `total` agrees on both sides).
24
+ * Source data comes out of `embedCache` (reverse sources ride the embed
25
+ * fan-out — see `linkedTargets`). Fail-soft: an unloadable source or an
26
+ * unknown `display` key degrades to `found: false` / a raw-key column,
27
+ * never a throw. */
28
+ export declare function buildBacklinksViews(schema: CollectionSchema | null, embedCache: EmbedCache, record: CollectionItem | null, locale: string): Record<string, BacklinksView>;
29
+ export declare function renderSubCell(subField: FieldSpec, value: unknown, record: CollectionItem | null, refCache: RefCache, locale: string): string;
30
+ export declare function evaluateDerived(field: FieldSpec, fieldKey: string, item: CollectionItem, schema: CollectionSchema | null, refRecords: RefRecordCache): number | null;
31
+ export declare function renderDerived(field: FieldSpec, computedValue: unknown, record: CollectionItem | null, locale: string): string;
32
+ //# sourceMappingURL=useCollectionRendering.renderers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCollectionRendering.renderers.d.ts","sourceRoot":"","sources":["../../src/vue/useCollectionRendering.renderers.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,mBAAmB,IAAI,SAAS,EAChC,UAAU,EAEV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,EACf,MAAM,8BAA8B,CAAC;AAWtC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGjG;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,CAGjF;AAED;;;oEAGoE;AACpE,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,CAGvF;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,cAAc,GAAG,IAAI,EAC7B,UAAU,EAAE,UAAU,GACrB;IAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,CAOlE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGxH;AAED;;;6DAG6D;AAC7D,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAC/B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,cAAc,GAAG,IAAI,EAC7B,MAAM,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAmB3B;AAYD;;;;;;;;qBAQqB;AACrB,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAC/B,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,cAAc,GAAG,IAAI,EAC7B,MAAM,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CA0B/B;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI5I;AAOD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,gBAAgB,GAAG,IAAI,EAC/B,UAAU,EAAE,cAAc,GACzB,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAK7H"}
@@ -0,0 +1,37 @@
1
+ import { type Ref } from "vue";
2
+ import { type CollectionApiResult } from "./uiContext";
3
+ import type { CollectionDetail, CollectionDetailResponse, CollectionSchema, EmbedCache, RefCache, RefRecordCache } from "@mulmoclaude/core/collection";
4
+ export interface LinkedCollectionCaches {
5
+ refCache: Ref<RefCache>;
6
+ refRecordCache: Ref<RefRecordCache>;
7
+ embedCache: Ref<EmbedCache>;
8
+ resetLinkedCaches: () => void;
9
+ loadLinkedCollections: (schema: CollectionSchema, expectedSlug: string) => Promise<void>;
10
+ }
11
+ export interface LinkedTargets {
12
+ refTargets: Set<string>;
13
+ embedTargets: Set<string>;
14
+ allTargets: string[];
15
+ }
16
+ export interface LinkedCachesSnapshot {
17
+ refCache: RefCache;
18
+ refRecordCache: RefRecordCache;
19
+ embedCache: EmbedCache;
20
+ }
21
+ type FetchCollectionDetail = (slug: string) => Promise<CollectionApiResult<CollectionDetailResponse>>;
22
+ /** The de-duplicated ref + embed target slugs a schema links to. `allTargets`
23
+ * is the union (each target fetched once even when both ref'd and embedded).
24
+ * `backlinks` SOURCE collections ride in `embedTargets`: a backlink needs
25
+ * exactly what an embed target caches (the source's schema + items in
26
+ * `embedCache`), so reverse sources reuse that cache rather than adding a
27
+ * parallel one. */
28
+ export declare function linkedTargets(schema: CollectionSchema): LinkedTargets;
29
+ /** Fan-out fetch that hydrates the linked-collection caches. Best-effort: a
30
+ * target whose fetch *rejects* (vs. resolving `{ ok: false }`) is coerced to a
31
+ * skip and must not abort the others. Returns null when a quicker subsequent
32
+ * load has already moved on (stale-write guard) so the caller drops the write.
33
+ * Pure + injectable (`fetchDetail`, `currentSlug`) so both paths are testable. */
34
+ export declare function fetchLinkedCaches(targets: LinkedTargets, fetchDetail: FetchCollectionDetail, currentSlug: () => string | undefined, expectedSlug: string): Promise<LinkedCachesSnapshot | null>;
35
+ export declare function useLinkedCollectionCaches(collection: Ref<CollectionDetail | null>): LinkedCollectionCaches;
36
+ export {};
37
+ //# sourceMappingURL=useLinkedCollectionCaches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLinkedCollectionCaches.d.ts","sourceRoot":"","sources":["../../src/vue/useLinkedCollectionCaches.ts"],"names":[],"mappings":"AAOA,OAAO,EAAO,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEvJ,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACpC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,qBAAqB,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,KAAK,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC,CAAC;AAEtG;;;;;oBAKoB;AACpB,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAKrE;AAED;;;;mFAImF;AACnF,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,qBAAqB,EAClC,WAAW,EAAE,MAAM,MAAM,GAAG,SAAS,EACrC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA2BtC;AAED,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,sBAAsB,CA4B1G"}