@eightyfourthousand/data-access 2026.6.1 → 2026.6.3

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.
@@ -4,7 +4,7 @@ export type AnnotationType = 'abbreviation' | 'audio' | 'blockquote' | 'code' |
4
4
  export declare const ANNOTATION_TYPE_DTO_TO_TYPE: Record<AnnotationDTOType, AnnotationType>;
5
5
  export declare const annotationTypeFromDTO: (type: AnnotationDTOType) => AnnotationType;
6
6
  export declare const ANNOTATION_TYPE_TO_DTO: Record<AnnotationType, AnnotationDTOType>;
7
- export type AnnotationDTOContentKey = 'authority' | 'endnote_xmlId' | 'glossary_xmlId' | 'heading-level' | 'heading-type' | 'href' | 'label' | 'lang' | 'link-text' | 'link-text-lookup' | 'link-type' | 'list-item-style' | 'list-spacing' | 'media-type' | 'nesting' | 'paragraph' | 'quote_xmlId' | 'src' | 'text-style' | 'text' | 'type' | 'title' | 'uuid' | 'same_work' | 'subtype' | 'toh';
7
+ export type AnnotationDTOContentKey = 'align' | 'authority' | 'endnote_xmlId' | 'glossary_xmlId' | 'heading-level' | 'heading-type' | 'href' | 'label' | 'lang' | 'link-text' | 'link-text-lookup' | 'link-type' | 'list-item-style' | 'list-spacing' | 'media-type' | 'nesting' | 'paragraph' | 'quote_xmlId' | 'src' | 'text-style' | 'text' | 'type' | 'title' | 'uuid' | 'same_work' | 'subtype' | 'toh' | 'word-break';
8
8
  export type AnnotationDTOContent = Partial<Record<AnnotationDTOContentKey, unknown>>;
9
9
  export type AnnotationDTO = {
10
10
  content: AnnotationDTOContent[];
@@ -14,7 +14,7 @@ export type AnnotationDTO = {
14
14
  uuid: string;
15
15
  passage_uuid?: string;
16
16
  passageUuid?: string;
17
- toh?: TohokuCatalogEntry;
17
+ toh?: string;
18
18
  };
19
19
  export type AnnotationsDTO = AnnotationDTO[];
20
20
  export declare const annotationTypeToDTO: (type: AnnotationType) => AnnotationDTOType;
@@ -27,5 +27,5 @@ export type AnnotationBase = {
27
27
  uuid: string;
28
28
  passageUuid: string;
29
29
  validated?: boolean;
30
- toh?: TohokuCatalogEntry;
30
+ toh?: TohokuCatalogEntry[];
31
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"annotation-type.js","sourceRoot":"","sources":["../../../../../../libs/data-access/src/lib/types/annotation/annotation-type.ts"],"names":[],"mappings":"AAsEA,MAAM,CAAC,MAAM,2BAA2B,GAGpC;IACF,YAAY,EAAE,cAAc;IAC5B,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,0BAA0B,EAAE,YAAY;IACxC,eAAe,EAAE,aAAa;IAC9B,mBAAmB,EAAE,kBAAkB;IACvC,kBAAkB,EAAE,iBAAiB;IACrC,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE,aAAa;IAC7B,eAAe,EAAE,cAAc;IAC/B,eAAe,EAAE,cAAc;IAC/B,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,WAAW;IACzB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,iBAAiB,EAAE,eAAe;IAClC,mBAAmB,EAAE,iBAAiB;IACtC,gBAAgB,EAAE,cAAc;IAChC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACV,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAuB,EACP,EAAE;IAClB,OAAO,2BAA2B,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GACjC;IACE,YAAY,EAAE,cAAc;IAC5B,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,0BAA0B;IACtC,WAAW,EAAE,eAAe;IAC5B,gBAAgB,EAAE,mBAAmB;IACrC,eAAe,EAAE,kBAAkB;IACnC,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAC7B,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,iBAAiB;IAChC,eAAe,EAAE,mBAAmB;IACpC,YAAY,EAAE,gBAAgB;IAC9B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACV,CAAC;AA+Cb,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAoB,EACD,EAAE;IACrB,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,0BAA0B;IAC1B,QAAQ;IACR,WAAW;IACX,SAAS;CACV,CAAC"}
1
+ {"version":3,"file":"annotation-type.js","sourceRoot":"","sources":["../../../../../../libs/data-access/src/lib/types/annotation/annotation-type.ts"],"names":[],"mappings":"AAsEA,MAAM,CAAC,MAAM,2BAA2B,GAGpC;IACF,YAAY,EAAE,cAAc;IAC5B,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,0BAA0B,EAAE,YAAY;IACxC,eAAe,EAAE,aAAa;IAC9B,mBAAmB,EAAE,kBAAkB;IACvC,kBAAkB,EAAE,iBAAiB;IACrC,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE,aAAa;IAC7B,eAAe,EAAE,cAAc;IAC/B,eAAe,EAAE,cAAc;IAC/B,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,WAAW;IACzB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,iBAAiB,EAAE,eAAe;IAClC,mBAAmB,EAAE,iBAAiB;IACtC,gBAAgB,EAAE,cAAc;IAChC,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACV,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAuB,EACP,EAAE;IAClB,OAAO,2BAA2B,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GACjC;IACE,YAAY,EAAE,cAAc;IAC5B,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,0BAA0B;IACtC,WAAW,EAAE,eAAe;IAC5B,gBAAgB,EAAE,mBAAmB;IACrC,eAAe,EAAE,kBAAkB;IACnC,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAC7B,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,WAAW;IACrB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,iBAAiB;IAChC,eAAe,EAAE,mBAAmB;IACpC,YAAY,EAAE,gBAAgB;IAC9B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACV,CAAC;AAkDb,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAoB,EACD,EAAE;IACrB,OAAO,sBAAsB,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,0BAA0B;IAC1B,QAAQ;IACR,WAAW;IACX,SAAS;CACV,CAAC"}
@@ -33,10 +33,15 @@ export type HasAbbreviationAnnotation = AnnotationBase & {
33
33
  abbreviation: string;
34
34
  };
35
35
  export type HeadingClass = 'section-label' | 'section-title' | 'supplementary' | 'table-label';
36
+ export type TextAlignValue = 'left' | 'right' | 'center' | 'justify';
37
+ export declare const normalizeAlign: (value: unknown) => TextAlignValue | undefined;
38
+ export type WordBreakValue = 'normal' | 'break-all';
39
+ export declare const normalizeWordBreak: (value: unknown) => WordBreakValue | undefined;
36
40
  export type HeadingAnnotation = AnnotationBase & {
37
41
  type: 'heading';
38
42
  level: number;
39
43
  class?: HeadingClass;
44
+ align?: TextAlignValue;
40
45
  };
41
46
  export type ImageAnnotation = AnnotationBase & {
42
47
  type: 'image';
@@ -99,6 +104,8 @@ export type MentionAnnotation = AnnotationBase & {
99
104
  };
100
105
  export type ParagraphAnnotation = AnnotationBase & {
101
106
  type: 'paragraph';
107
+ align?: TextAlignValue;
108
+ wordBreak?: WordBreakValue;
102
109
  };
103
110
  export type QuoteAnnotation = AnnotationBase & {
104
111
  type: 'quote';
@@ -1,4 +1,28 @@
1
+ import { parseTohList, serializeTohList } from '../toh';
1
2
  import { annotationTypeFromDTO, annotationTypeToDTO, } from './annotation-type';
3
+ const TEXT_ALIGN_VALUES = [
4
+ 'left',
5
+ 'right',
6
+ 'center',
7
+ 'justify',
8
+ ];
9
+ // Normalizes a raw alignment value (e.g. TipTap's `textAlign` node attr or a
10
+ // jsonb `align` content value). Returns undefined for the default `left` and any
11
+ // missing/unrecognized value, so we never persist redundant alignment.
12
+ export const normalizeAlign = (value) => {
13
+ return TEXT_ALIGN_VALUES.includes(value)
14
+ ? value
15
+ : undefined;
16
+ };
17
+ const WORD_BREAK_VALUES = ['normal', 'break-all'];
18
+ // Normalizes a raw word-break value (e.g. TipTap's `wordBreak` node attr or a
19
+ // jsonb `word-break` content value). Returns undefined for any missing/unrecognized
20
+ // value, so we never persist a redundant word-break.
21
+ export const normalizeWordBreak = (value) => {
22
+ return WORD_BREAK_VALUES.includes(value)
23
+ ? value
24
+ : undefined;
25
+ };
2
26
  export const baseAnnotationFromDTO = (dto) => {
3
27
  const passageUuid = dto.passage_uuid || dto.passageUuid || '';
4
28
  return {
@@ -6,7 +30,7 @@ export const baseAnnotationFromDTO = (dto) => {
6
30
  start: dto.start,
7
31
  end: dto.end,
8
32
  type: annotationTypeFromDTO(dto.type),
9
- toh: dto.toh,
33
+ toh: parseTohList(dto.toh),
10
34
  passageUuid,
11
35
  validated: true,
12
36
  };
@@ -17,7 +41,7 @@ export const baseAnnotationToDto = (annotation) => ({
17
41
  type: annotationTypeToDTO(annotation.type),
18
42
  uuid: annotation.uuid,
19
43
  passage_uuid: annotation.passageUuid,
20
- toh: annotation.toh,
44
+ toh: serializeTohList(annotation.toh),
21
45
  content: [],
22
46
  });
23
47
  //# sourceMappingURL=annotation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"annotation.js","sourceRoot":"","sources":["../../../../../../libs/data-access/src/lib/types/annotation/annotation.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAmN3B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAkB,EAAkB,EAAE;IAC1E,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAE9D,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,IAAI,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;QACrC,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,WAAW;QACX,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,UAA0B,EACX,EAAE,CAAC,CAAC;IACnB,GAAG,EAAE,UAAU,CAAC,GAAG;IACnB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;IAC1C,IAAI,EAAE,UAAU,CAAC,IAAI;IACrB,YAAY,EAAE,UAAU,CAAC,WAAW;IACpC,GAAG,EAAE,UAAU,CAAC,GAAG;IACnB,OAAO,EAAE,EAAE;CACZ,CAAC,CAAC"}
1
+ {"version":3,"file":"annotation.js","sourceRoot":"","sources":["../../../../../../libs/data-access/src/lib/types/annotation/annotation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAGL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAkD3B,MAAM,iBAAiB,GAAqB;IAC1C,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;CACV,CAAC;AAEF,6EAA6E;AAC7E,iFAAiF;AACjF,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAA8B,EAAE;IAC3E,OAAO,iBAAiB,CAAC,QAAQ,CAAC,KAAuB,CAAC;QACxD,CAAC,CAAE,KAAwB;QAC3B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAIF,MAAM,iBAAiB,GAAqB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAEpE,8EAA8E;AAC9E,oFAAoF;AACpF,qDAAqD;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAc,EACc,EAAE;IAC9B,OAAO,iBAAiB,CAAC,QAAQ,CAAC,KAAuB,CAAC;QACxD,CAAC,CAAE,KAAwB;QAC3B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAwKF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAkB,EAAkB,EAAE;IAC1E,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAE9D,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,IAAI,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;QACrC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1B,WAAW;QACX,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,UAA0B,EACX,EAAE,CAAC,CAAC;IACnB,GAAG,EAAE,UAAU,CAAC,GAAG;IACnB,KAAK,EAAE,UAAU,CAAC,KAAK;IACvB,IAAI,EAAE,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;IAC1C,IAAI,EAAE,UAAU,CAAC,IAAI;IACrB,YAAY,EAAE,UAAU,CAAC,WAAW;IACpC,GAAG,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC;IACrC,OAAO,EAAE,EAAE;CACZ,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { baseAnnotationFromDTO, baseAnnotationToDto, } from './annotation';
1
+ import { baseAnnotationFromDTO, baseAnnotationToDto, normalizeAlign, } from './annotation';
2
2
  export const transformer = (dto) => {
3
3
  const heading = baseAnnotationFromDTO(dto);
4
4
  dto.content.forEach((content) => {
@@ -11,6 +11,10 @@ export const transformer = (dto) => {
11
11
  if (content['heading-type']) {
12
12
  heading.class = content['heading-type'];
13
13
  }
14
+ const align = normalizeAlign(content['align']);
15
+ if (align) {
16
+ heading.align = align;
17
+ }
14
18
  });
15
19
  return heading;
16
20
  };
@@ -21,6 +25,10 @@ export const exporter = (annotation) => {
21
25
  'heading-level': `h${level}`,
22
26
  ...(headingClass ? { 'heading-type': headingClass } : {}),
23
27
  });
28
+ const align = normalizeAlign(annotation.align);
29
+ if (align) {
30
+ dto.content.push({ align });
31
+ }
24
32
  return dto;
25
33
  };
26
34
  //# sourceMappingURL=heading.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"heading.js","sourceRoot":"","sources":["../../../../../../libs/data-access/src/lib/types/annotation/heading.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,WAAW,GAA0B,CAAC,GAAG,EAAqB,EAAE;IAC3E,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAsB,CAAC;IAChE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAW,CAAC;YACrD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,cAAc,CAAiB,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAuB,CAAC,UAAU,EAAiB,EAAE;IACxE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,UAA+B,CAAC;IACvE,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC5C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QACf,eAAe,EAAE,IAAI,KAAK,EAAE;QAC5B,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
1
+ {"version":3,"file":"heading.js","sourceRoot":"","sources":["../../../../../../libs/data-access/src/lib/types/annotation/heading.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,WAAW,GAA0B,CAAC,GAAG,EAAqB,EAAE;IAC3E,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAsB,CAAC;IAChE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,CAAW,CAAC;YACrD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,cAAc,CAAiB,CAAC;QAC1D,CAAC;QAED,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAuB,CAAC,UAAU,EAAiB,EAAE;IACxE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,UAA+B,CAAC;IACvE,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC5C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QACf,eAAe,EAAE,IAAI,KAAK,EAAE;QAC5B,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,cAAc,CAAE,UAAgC,CAAC,KAAK,CAAC,CAAC;IACtE,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
@@ -1,8 +1,29 @@
1
- import { baseAnnotationFromDTO, baseAnnotationToDto, } from './annotation';
1
+ import { baseAnnotationFromDTO, baseAnnotationToDto, normalizeAlign, normalizeWordBreak, } from './annotation';
2
2
  export const transformer = (dto) => {
3
- return baseAnnotationFromDTO(dto);
3
+ const paragraph = baseAnnotationFromDTO(dto);
4
+ dto.content.forEach((content) => {
5
+ const align = normalizeAlign(content['align']);
6
+ if (align) {
7
+ paragraph.align = align;
8
+ }
9
+ const wordBreak = normalizeWordBreak(content['word-break']);
10
+ if (wordBreak) {
11
+ paragraph.wordBreak = wordBreak;
12
+ }
13
+ });
14
+ return paragraph;
4
15
  };
5
16
  export const exporter = (annotation) => {
6
- return baseAnnotationToDto(annotation);
17
+ const dto = baseAnnotationToDto(annotation);
18
+ const { align, wordBreak } = annotation;
19
+ const normalizedAlign = normalizeAlign(align);
20
+ if (normalizedAlign) {
21
+ dto.content.push({ align: normalizedAlign });
22
+ }
23
+ const normalizedWordBreak = normalizeWordBreak(wordBreak);
24
+ if (normalizedWordBreak) {
25
+ dto.content.push({ 'word-break': normalizedWordBreak });
26
+ }
27
+ return dto;
7
28
  };
8
29
  //# sourceMappingURL=paragraph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paragraph.js","sourceRoot":"","sources":["../../../../../../libs/data-access/src/lib/types/annotation/paragraph.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,WAAW,GAA0B,CAChD,GAAG,EACkB,EAAE;IACvB,OAAO,qBAAqB,CAAC,GAAG,CAAwB,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAuB,CAAC,UAAU,EAAiB,EAAE;IACxE,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC,CAAC"}
1
+ {"version":3,"file":"paragraph.js","sourceRoot":"","sources":["../../../../../../libs/data-access/src/lib/types/annotation/paragraph.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,WAAW,GAA0B,CAChD,GAAG,EACkB,EAAE;IACvB,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAwB,CAAC;IACpE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,CAAC;QAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5D,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAuB,CAAC,UAAU,EAAiB,EAAE;IACxE,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,UAAiC,CAAC;IAE/D,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,eAAe,EAAE,CAAC;QACpB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,mBAAmB,EAAE,CAAC;QACxB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
@@ -1 +1,5 @@
1
1
  export type TohokuCatalogEntry = `toh${number}`;
2
+ /** Split a comma-separated DB toh value (e.g. "toh417,toh418") into entries. */
3
+ export declare const parseTohList: (value?: string | null) => TohokuCatalogEntry[];
4
+ /** Join entries back into the DB comma-string form (undefined when empty). */
5
+ export declare const serializeTohList: (list?: TohokuCatalogEntry[]) => string | undefined;
package/lib/types/toh.js CHANGED
@@ -1,2 +1,10 @@
1
- export {};
1
+ /** Split a comma-separated DB toh value (e.g. "toh417,toh418") into entries. */
2
+ export const parseTohList = (value) => value
3
+ ? value
4
+ .split(',')
5
+ .map((t) => t.trim())
6
+ .filter(Boolean)
7
+ : [];
8
+ /** Join entries back into the DB comma-string form (undefined when empty). */
9
+ export const serializeTohList = (list) => (list && list.length ? list.join(',') : undefined);
2
10
  //# sourceMappingURL=toh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toh.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/types/toh.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"toh.js","sourceRoot":"","sources":["../../../../../libs/data-access/src/lib/types/toh.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAqB,EAAwB,EAAE,CAC1E,KAAK;IACH,CAAC,CAAE,KAAK;SACH,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAA0B;IAC7C,CAAC,CAAC,EAAE,CAAC;AAET,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAA2B,EACP,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eightyfourthousand/data-access",
3
- "version": "2026.6.1",
3
+ "version": "2026.6.3",
4
4
  "description": "Shared data access clients, DTO mappers, and domain types for 84000 applications.",
5
5
  "private": false,
6
6
  "repository": {
@@ -17,7 +17,7 @@
17
17
  "access": "public"
18
18
  },
19
19
  "dependencies": {
20
- "@eightyfourthousand/lib-utils": "^2026.6.1",
20
+ "@eightyfourthousand/lib-utils": "^2026.6.3",
21
21
  "@supabase/ssr": "^0.10.3",
22
22
  "@supabase/supabase-js": "^2.106.2",
23
23
  "@tiptap/core": "^3.23.6",