@wssto2/vue-core 0.19.0 → 0.21.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 (174) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +5 -1
  3. package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-Bg8JFAOT.js → AccessGate.vue_vue_type_script_setup_true_lang-Dw_pnsh9.js} +1 -1
  4. package/dist/{AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js → AccountMenuItem.vue_vue_type_script_setup_true_lang-C2TmmH38.js} +1 -1
  5. package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-B5IMNnTf.js → ActionRow.vue_vue_type_script_setup_true_lang-BEV0drwF.js} +2 -2
  6. package/dist/{Activity-CiYn5E6A.js → Activity-CZzAt3SH.js} +9 -9
  7. package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-BkZzuICH.js} +6 -6
  8. package/dist/{AlertDialog.vue_vue_type_script_setup_true_lang-WuGvAOrj.js → AlertDialog.vue_vue_type_script_setup_true_lang-B0UvzCoE.js} +1 -1
  9. package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js → AsyncSection.vue_vue_type_script_setup_true_lang-DuPS_zMX.js} +4 -4
  10. package/dist/{Banner.vue_vue_type_script_setup_true_lang-sv0phngk.js → Banner.vue_vue_type_script_setup_true_lang-BXZVOhfH.js} +1 -1
  11. package/dist/{Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js → Button.vue_vue_type_script_setup_true_lang-CZkTqGtE.js} +1 -1
  12. package/dist/{Changes-Cy8STpLX.js → Changes-B0bhSNU3.js} +5 -5
  13. package/dist/CharacteristicsPage-fGnahf62.js +4 -0
  14. package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-Dr6nFNBB.js → CollectionPage.vue_vue_type_script_setup_true_lang-Bf5WXVFZ.js} +12 -12
  15. package/dist/CollectionTree.vue_vue_type_script_setup_true_lang-DV0OhquO.js +345 -0
  16. package/dist/{DataTable.vue_vue_type_script_setup_true_lang-D372wlxR.js → DataTable.vue_vue_type_script_setup_true_lang-Cw_E8w48.js} +1 -1
  17. package/dist/{DateField.vue_vue_type_script_setup_true_lang-D0KcfW8R.js → DateField.vue_vue_type_script_setup_true_lang-Cn8CNAwM.js} +4 -4
  18. package/dist/{DeadLetters-DhJkMpd_.js → DeadLetters--js7aeC6.js} +4 -4
  19. package/dist/{DiscardChangesModal.vue_vue_type_script_setup_true_lang-92szOrYd.js → DiscardChangesModal.vue_vue_type_script_setup_true_lang-lnFUie1d.js} +1 -1
  20. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js → EmptyState.vue_vue_type_script_setup_true_lang-DHmu-UG-.js} +1 -1
  21. package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js → FormGroup.vue_vue_type_script_setup_true_lang-BUhKKybf.js} +4 -4
  22. package/dist/{FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js → FormRow.vue_vue_type_script_setup_true_lang-B-uth5RB.js} +1 -1
  23. package/dist/{FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js → FormView.vue_vue_type_script_setup_true_lang-CoQZG-hB.js} +2 -2
  24. package/dist/{General-CwTPC5UP.js → General-BGT9H69S.js} +8 -8
  25. package/dist/{HeaderAction.vue_vue_type_script_setup_true_lang-Da59TLBh.js → HeaderAction.vue_vue_type_script_setup_true_lang-Uw0vwV-o.js} +2 -2
  26. package/dist/{Icon.vue_vue_type_script_lang-BhhsFYwp.js → Icon.vue_vue_type_script_lang-BIzh8LF1.js} +19 -13
  27. package/dist/{IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js → IconTile.vue_vue_type_script_setup_true_lang-DRirnJvd.js} +1 -1
  28. package/dist/{IncidentRecord-hXEGuLGg.js → IncidentRecord-BETFfXbI.js} +17 -17
  29. package/dist/{IncidentsList-C41VyDwK.js → IncidentsList-BIr3a2To.js} +6 -6
  30. package/dist/{LeaveGuardRoot.vue_vue_type_script_setup_true_lang-CrGrjrlO.js → LeaveGuardRoot.vue_vue_type_script_setup_true_lang-DjXYh-p0.js} +1 -1
  31. package/dist/{Menu.vue_vue_type_script_setup_true_lang-Cqu4Ebsb.js → Menu.vue_vue_type_script_setup_true_lang-D2FsOVYA.js} +1 -1
  32. package/dist/{MenuButton.vue_vue_type_script_setup_true_lang-C-XRr5f2.js → MenuButton.vue_vue_type_script_setup_true_lang-BNzrYIzR.js} +1 -1
  33. package/dist/{Modal.vue_vue_type_script_setup_true_lang-CZ7WrDwu.js → Modal.vue_vue_type_script_setup_true_lang-BRRMKXOV.js} +2 -2
  34. package/dist/{NewRolePage-BYYZJkK7.js → NewRolePage-B0Y5MrTu.js} +4 -4
  35. package/dist/{NoAccess.vue_vue_type_script_setup_true_lang-BHzZtZ50.js → NoAccess.vue_vue_type_script_setup_true_lang-CnfE_AEl.js} +1 -1
  36. package/dist/{NumberField.vue_vue_type_script_setup_true_lang-BhNZgEW6.js → NumberField.vue_vue_type_script_setup_true_lang-BDZ_0TH7.js} +2 -2
  37. package/dist/{Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js → Panel.vue_vue_type_script_setup_true_lang-CwcJadT7.js} +1 -1
  38. package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-mYFuG-Y3.js → PersonAccess.vue_vue_type_script_setup_true_lang-CJMV9BDQ.js} +12 -12
  39. package/dist/{PhotoViewer.vue_vue_type_script_setup_true_lang-DmMg1T_V.js → PhotoViewer.vue_vue_type_script_setup_true_lang-BL485L63.js} +1 -1
  40. package/dist/{ProfilePage-DGEsIycR.js → ProfilePage-CMy2Dkr2.js} +17 -17
  41. package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-B3BnYg1x.js → RecordHeader.vue_vue_type_script_setup_true_lang-D4PcZnbo.js} +2 -2
  42. package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-1iZtj3rh.js → ResourcePage.vue_vue_type_script_setup_true_lang-CpGwm2tv.js} +4 -4
  43. package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-BslSDDiM.js → RoleEditor.vue_vue_type_script_setup_true_lang-CMo8PrO7.js} +12 -12
  44. package/dist/{RolePage-C08ZUqw1.js → RolePage-DGFISfM1.js} +13 -13
  45. package/dist/{RolesPage-FOuY1VKg.js → RolesPage-Bq9EVB_3.js} +9 -9
  46. package/dist/{SectionList.vue_vue_type_script_setup_true_lang-CodyVezo.js → SectionList.vue_vue_type_script_setup_true_lang-BdJ11lZo.js} +3 -3
  47. package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-DCTFxfPB.js → SectionNavigator.vue_vue_type_script_setup_true_lang-CnzECivO.js} +6 -6
  48. package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-CLR6EvzO.js → SegmentedField.vue_vue_type_script_setup_true_lang-D3IZil4q.js} +2 -2
  49. package/dist/{SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js → SelectField.vue_vue_type_script_setup_true_lang-DxCEwED6.js} +6 -6
  50. package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-CDr4WNIb.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-DtVXUOdP.js} +8 -8
  51. package/dist/{ServiceAccountRecord-kWwIQGZb.js → ServiceAccountRecord-Dc7Gn52W.js} +18 -18
  52. package/dist/{ServiceAccountsList-CKy9_YHP.js → ServiceAccountsList-DBUFeka-.js} +10 -10
  53. package/dist/{Sessions-BDc8gdYH.js → Sessions-BMmqYZrJ.js} +7 -7
  54. package/dist/{SettingsPage-t-8kmFVT.js → SettingsPage-4Dolsr0t.js} +18 -18
  55. package/dist/Sheet.vue_vue_type_script_setup_true_lang-BVU5yzXe.js +163 -0
  56. package/dist/{SignIn-CqtkvtCZ.js → SignIn-uFn1ZWG8.js} +8 -8
  57. package/dist/{SignInPage-DcdNKZIb.js → SignInPage-DouCg9aD.js} +6 -6
  58. package/dist/{SignIns-D4-nGu0B.js → SignIns-CqN5UNmh.js} +5 -5
  59. package/dist/SortableList.vue_vue_type_script_setup_true_lang-D2-5Z_jO.js +112 -0
  60. package/dist/{StatusLine.vue_vue_type_script_setup_true_lang-DsdQmLq6.js → StatusLine.vue_vue_type_script_setup_true_lang-DBkQueB0.js} +1 -1
  61. package/dist/{SwipeActions.vue_vue_type_script_setup_true_lang-D8SiC0G7.js → SwipeActions.vue_vue_type_script_setup_true_lang-DUjUWq3G.js} +1 -1
  62. package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-CLtcuofe.js → SwitchField.vue_vue_type_script_setup_true_lang-CTMjlNid.js} +2 -2
  63. package/dist/Tabs.vue_vue_type_script_setup_true_lang-7CJto6Mp.js +169 -0
  64. package/dist/{TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js → TextField.vue_vue_type_script_setup_true_lang-B6Q65aQA.js} +4 -4
  65. package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-YxUlNHSk.js → TextareaField.vue_vue_type_script_setup_true_lang-Cj0LKDdo.js} +2 -2
  66. package/dist/{TimeField.vue_vue_type_script_setup_true_lang-DHNC_MLt.js → TimeField.vue_vue_type_script_setup_true_lang-TSnnjMn1.js} +4 -4
  67. package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-d_KuxWjH.js → Timestamp.vue_vue_type_script_setup_true_lang-0WL7PP0j.js} +1 -1
  68. package/dist/{UserRecord-CwZCr9Im.js → UserRecord-CH5oNRLg.js} +10 -10
  69. package/dist/{UsersList-Cn19sFgv.js → UsersList-BmxWpt9h.js} +3 -3
  70. package/dist/{ViewTabs.vue_vue_type_script_setup_true_lang-BjdDXE3T.js → ViewTabs.vue_vue_type_script_setup_true_lang-BKI5DGuS.js} +1 -1
  71. package/dist/access/index.js +7 -7
  72. package/dist/app/index.js +2 -2
  73. package/dist/{application-CDSweJb9.js → application-C5fZyCB9.js} +8 -8
  74. package/dist/{back-LcLlFodC.js → back-CeozxCgQ.js} +2 -2
  75. package/dist/button/index.js +1 -1
  76. package/dist/characteristics/CharacteristicsPage.vue.d.ts +2 -0
  77. package/dist/characteristics/DeleteDialog.vue.d.ts +22 -0
  78. package/dist/characteristics/ItemSheet.vue.d.ts +25 -0
  79. package/dist/characteristics/access.d.ts +3 -0
  80. package/dist/characteristics/api.d.ts +23 -0
  81. package/dist/characteristics/context.d.ts +12 -0
  82. package/dist/characteristics/feature.d.ts +27 -0
  83. package/dist/characteristics/index.d.ts +10 -0
  84. package/dist/characteristics/index.js +617 -0
  85. package/dist/characteristics/model.d.ts +34 -0
  86. package/dist/characteristics/routes.d.ts +13 -0
  87. package/dist/collection/CollectionTree.vue.d.ts +51 -0
  88. package/dist/collection/CollectionTreeBranch.vue.d.ts +12 -0
  89. package/dist/collection/FileExplorer.vue.d.ts +53 -0
  90. package/dist/collection/RowMore.vue.d.ts +11 -0
  91. package/dist/collection/explorer.d.ts +11 -0
  92. package/dist/collection/index.d.ts +5 -0
  93. package/dist/collection/index.js +431 -158
  94. package/dist/collection/tree.d.ts +64 -0
  95. package/dist/content/DiffView.vue.d.ts +22 -0
  96. package/dist/content/PreviewFrame.vue.d.ts +46 -0
  97. package/dist/content/diff.d.ts +27 -0
  98. package/dist/content/index.d.ts +4 -0
  99. package/dist/content/index.js +552 -218
  100. package/dist/content/previewFrame.d.ts +50 -0
  101. package/dist/{contributions-B0x5x5xD.js → contributions-BSmIRPg1.js} +1 -1
  102. package/dist/controls/SortableList.vue.d.ts +32 -0
  103. package/dist/controls/Tabs.vue.d.ts +2 -0
  104. package/dist/controls/index.d.ts +1 -0
  105. package/dist/controls/index.js +18 -16
  106. package/dist/form/CharacteristicField.vue.d.ts +36 -0
  107. package/dist/form/CodeEditor.vue.d.ts +61 -0
  108. package/dist/form/I18nField.vue.d.ts +1 -1
  109. package/dist/form/MarkerList.vue.d.ts +20 -0
  110. package/dist/form/TextareaField.vue.d.ts +1 -1
  111. package/dist/form/index.d.ts +3 -0
  112. package/dist/form/index.js +1769 -1805
  113. package/dist/{guards-CNJ0ATVC.js → guards-BP9x7CLF.js} +1 -1
  114. package/dist/i18n/index.js +46 -46
  115. package/dist/icon/core.d.ts +6 -0
  116. package/dist/icon/index.js +1 -1
  117. package/dist/identity/index.js +3 -3
  118. package/dist/identity/profile/EmailChangeDialog.vue.d.ts +2 -2
  119. package/dist/incidents/index.js +1 -1
  120. package/dist/{index-SLJWm40T.js → index-4wyfEeIw.js} +9 -9
  121. package/dist/{index-BA2w8uwD.js → index-C_ZVaTkR.js} +27 -27
  122. package/dist/{index-1HS7O2-e.js → index-OVbtHAtG.js} +10 -10
  123. package/dist/index.d.ts +1 -1
  124. package/dist/index.js +1 -1
  125. package/dist/modal/Sheet.vue.d.ts +13 -0
  126. package/dist/modal/TabbedSheet.vue.d.ts +46 -0
  127. package/dist/modal/index.d.ts +1 -0
  128. package/dist/modal/index.js +123 -41
  129. package/dist/modules/characteristics/entities.d.ts +67 -0
  130. package/dist/modules/characteristics/routes.d.ts +55 -0
  131. package/dist/modules/characteristics/schemas.d.ts +50 -0
  132. package/dist/modules/identity/entities.d.ts +1 -0
  133. package/dist/navigation-C05vGEN8.js +55 -0
  134. package/dist/{neighbors-Dg_LU9ry.js → neighbors-BqfO6zf3.js} +2 -2
  135. package/dist/notifications/index.js +1 -1
  136. package/dist/onboarding/index.js +2 -2
  137. package/dist/{options-mOOX6JSS.js → options-DDCG86OV.js} +2 -2
  138. package/dist/overlay/index.js +4 -4
  139. package/dist/page/SectionNavigator.vue.d.ts +1 -1
  140. package/dist/page/SplitPane.vue.d.ts +54 -0
  141. package/dist/page/WorkbenchPage.vue.d.ts +72 -0
  142. package/dist/page/index.d.ts +2 -0
  143. package/dist/page/index.js +343 -104
  144. package/dist/phone/index.js +3 -3
  145. package/dist/platform/index.js +3 -3
  146. package/dist/platform/navigation.d.ts +10 -0
  147. package/dist/{platform-DU9QFts8.js → platform-YWfOO7b2.js} +94 -88
  148. package/dist/pwa/index.js +3 -3
  149. package/dist/resource/index.js +1 -1
  150. package/dist/{resources-BZLlAtoS.js → resources-DkI60fHL.js} +1 -1
  151. package/dist/router/index.js +4 -4
  152. package/dist/router/navigation.d.ts +2 -0
  153. package/dist/routes-DC8BWFz8.js +251 -0
  154. package/dist/{rowLayout-PIuD7MGo.js → rowLayout-zd3Yw6fO.js} +34 -33
  155. package/dist/{sectionIndex-BS0ic5W7.js → sectionIndex-CSr457Lb.js} +2 -2
  156. package/dist/{sections-BpiRLntE.js → sections-DXso1JSV.js} +2 -2
  157. package/dist/shell/NavigationList.vue.d.ts +1 -1
  158. package/dist/shell/index.js +522 -501
  159. package/dist/shell/navigationGroups.d.ts +4 -1
  160. package/dist/state/index.js +8 -8
  161. package/dist/{state-z1iPF1DT.js → state-DqCZdet7.js} +1 -1
  162. package/dist/styles.css +1 -1
  163. package/dist/{suggestions-DeMgs_ki.js → suggestions-DZ3B5RVH.js} +1 -1
  164. package/dist/testing/index.js +2 -2
  165. package/dist/{useCommand-DQKvro1n.js → useCommand-DerEnzIW.js} +4 -4
  166. package/dist/{useGroupSheet-CRw3MUmX.js → useGroupSheet-B9TCHIKH.js} +5 -5
  167. package/dist/{usePreferences-DB29UTFD.js → usePreferences-D38x73re.js} +1 -1
  168. package/dist/{useRecordDialog-0azHxxvm.js → useRecordDialog-DX97ivZD.js} +1 -1
  169. package/dist/{useResourceForm-zVuWerSn.js → useResourceForm-D8T1snBQ.js} +1 -1
  170. package/dist/{useTypedEntry-BsMV66Yc.js → useTypedEntry-CTkgM29Y.js} +2 -2
  171. package/package.json +6 -2
  172. package/dist/Sheet.vue_vue_type_script_setup_true_lang-BG8HUNfs.js +0 -145
  173. package/dist/Tabs.vue_vue_type_script_setup_true_lang-tpkGp98F.js +0 -155
  174. package/dist/navigation-d-JAPBGA.js +0 -53
@@ -0,0 +1,64 @@
1
+ import type { InjectionKey } from "vue";
2
+ import type { RowAction } from "./columns";
3
+ /** What a `CollectionTree` node is: its id, its name, its children, and whether it is switched on (`undefined`: it has no switch). */
4
+ export interface TreeNode<Node> {
5
+ readonly id: string | number;
6
+ readonly label: string;
7
+ readonly active?: boolean;
8
+ readonly children?: readonly Node[];
9
+ }
10
+ /**
11
+ * A column besides the name. `visible` says where it applies: a column that belongs to one branch ("Kod marke" under Marke) is blank on
12
+ * every other row. The header always shows, so the columns do not jump when a branch opens.
13
+ */
14
+ export interface TreeColumn<Node> {
15
+ readonly key: string;
16
+ readonly label: string;
17
+ /** Pixels. */
18
+ readonly width?: number;
19
+ readonly align?: "start" | "center" | "end";
20
+ /** `depth` is 0 for the roots. Default: every row. */
21
+ readonly visible?: (node: Node, depth: number) => boolean;
22
+ }
23
+ /** What `@reorder` says: the node, the parent it stays in (`null`: a root) and where it lands among that parent's children, counted from 0. */
24
+ export interface TreeReorder {
25
+ readonly id: string | number;
26
+ readonly parentId: string | number | null;
27
+ readonly index: number;
28
+ }
29
+ /**
30
+ * The nodes a search or filter leaves on screen: those that match, and every ancestor of one (a match is never shown without its
31
+ * path). `forced` is the ancestors, which show open while the search lasts.
32
+ */
33
+ export declare function visibleNodes<Node extends TreeNode<Node>>(nodes: readonly Node[], matches: (node: Node) => boolean): {
34
+ shown: Set<string | number>;
35
+ forced: Set<string | number>;
36
+ };
37
+ /** Whether a node's name contains the text, ignoring case and accents. */
38
+ export declare const matchesText: (label: string, text: string) => boolean;
39
+ /** A node as the branches see it: the typed node of the app, loosely (internal). */
40
+ export interface LooseNode extends TreeNode<LooseNode> {
41
+ readonly [key: string]: unknown;
42
+ }
43
+ /** What `CollectionTree` hands its branches (internal): one object, so the recursion does not repeat a dozen props. */
44
+ export interface TreeContext {
45
+ columns: readonly TreeColumn<LooseNode>[];
46
+ readonly: boolean;
47
+ reorderable: boolean;
48
+ search: string;
49
+ activeLabel: string | undefined;
50
+ isOpen(node: LooseNode): boolean;
51
+ isShown(node: LooseNode): boolean;
52
+ toggle(node: LooseNode): void;
53
+ addLabel(parent: LooseNode | null, level: number): string | null;
54
+ add(parent: LooseNode | null): void;
55
+ open(node: LooseNode): void;
56
+ setActive(node: LooseNode, active: boolean): void;
57
+ reorder(change: TreeReorder): void;
58
+ actions(node: LooseNode, depth: number): readonly RowAction[];
59
+ slot(name: string): ((scope: {
60
+ node: LooseNode;
61
+ depth: number;
62
+ }) => unknown) | undefined;
63
+ }
64
+ export declare const treeContextKey: InjectionKey<TreeContext>;
@@ -0,0 +1,22 @@
1
+ import { type DiffLine } from "./diff";
2
+ /**
3
+ * A diff of two texts, drawn from the lines the server computed (`{ op, text }`, op `" "` unchanged, `"-"` removed, `"+"` added):
4
+ * line numbers, the changes marked, and runs of unchanged lines folded to "12 unchanged lines" (a click opens them).
5
+ * `mode="unified"` is one column, `"split"` puts the old text left and the new right. A change is told by its sign and by
6
+ * screen-reader text ("added", "removed"), never by colour alone. Nothing changed shows a plain sentence.
7
+ *
8
+ * <DiffView :lines="version.diff" mode="split" :context="3" />
9
+ *
10
+ * The text is not highlighted (that would load the code editor for a read-only view); it is shown as it is, in the mono font.
11
+ */
12
+ type __VLS_Props = {
13
+ lines: readonly DiffLine[];
14
+ mode?: "unified" | "split";
15
+ /** Unchanged lines kept around each change; the rest fold. `null` folds nothing. Default 3. */
16
+ context?: number | null;
17
+ };
18
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
19
+ mode: "unified" | "split";
20
+ context: number | null;
21
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
+ export default _default;
@@ -0,0 +1,46 @@
1
+ import { type PreviewAction, type PreviewCommand, type PreviewDevice } from "./previewFrame";
2
+ declare const _default: <In extends {
3
+ type: string;
4
+ } = PreviewAction, Out extends {
5
+ type: string;
6
+ } = PreviewCommand>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
7
+ props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
8
+ readonly onMessage?: ((message: In) => any) | undefined;
9
+ readonly onError?: (() => any) | undefined;
10
+ readonly onLoad?: ((milliseconds: number) => any) | undefined;
11
+ readonly "onUpdate:device"?: ((device: "desktop" | "tablet" | "mobile") => any) | undefined;
12
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onError" | "onLoad" | "onMessage" | "onUpdate:device"> & {
13
+ src: string;
14
+ /** The iframe's accessible name. */
15
+ title: string;
16
+ device?: PreviewDevice;
17
+ sandbox?: string;
18
+ /** The origin messages are accepted from. Default: the origin of `src`. */
19
+ origin?: string;
20
+ /** Reads a message of the page; return null to ignore it. Default: `parsePreviewAction`. */
21
+ parse?: (data: unknown) => In | null;
22
+ /** Milliseconds before a page that has not loaded counts as failed. Default 15000. */
23
+ timeout?: number;
24
+ } & Partial<{}>> & import("vue").PublicProps;
25
+ expose(exposed: import("vue").ShallowUnwrapRef<{
26
+ reload: () => void;
27
+ post: (message: Out) => void;
28
+ }>): void;
29
+ attrs: any;
30
+ slots: {
31
+ toolbar?: () => unknown;
32
+ footer?: (scope: {
33
+ width: number;
34
+ scale: number;
35
+ device: PreviewDevice;
36
+ loadMs: number | null;
37
+ }) => unknown;
38
+ };
39
+ emit: ((evt: "message", message: In) => void) & ((evt: "error") => void) & ((evt: "load", milliseconds: number) => void) & ((evt: "update:device", device: "desktop" | "tablet" | "mobile") => void);
40
+ }>) => import("vue").VNode & {
41
+ __ctx?: Awaited<typeof __VLS_setup>;
42
+ };
43
+ export default _default;
44
+ type __VLS_PrettifyLocal<T> = {
45
+ [K in keyof T]: T[K];
46
+ } & {};
@@ -0,0 +1,27 @@
1
+ /** One line of a diff: unchanged (`" "`), removed (`"-"`) or added (`"+"`). */
2
+ export interface DiffLine {
3
+ op: " " | "-" | "+";
4
+ text: string;
5
+ }
6
+ /** A line with its numbers in the old and in the new text (a removed line has no new number, an added line no old one). */
7
+ export interface NumberedLine extends DiffLine {
8
+ oldNo: number | null;
9
+ newNo: number | null;
10
+ }
11
+ /** A run of unchanged lines folded away; `lines` are what a click shows. `key` is the index of its first line. */
12
+ export interface DiffGap {
13
+ gap: true;
14
+ key: number;
15
+ lines: NumberedLine[];
16
+ }
17
+ export type DiffRow = NumberedLine | DiffGap;
18
+ export declare const isGap: (row: object) => row is DiffGap;
19
+ /** The unified rows: every line numbered, and each run of unchanged lines farther than `context` lines from a change folded into a gap (`context: null` folds nothing). A run of one line is not worth a gap. */
20
+ export declare function diffRows(lines: readonly DiffLine[], context: number | null, expanded?: ReadonlySet<number>): DiffRow[];
21
+ /** Two columns of the split view; a side without a line is null (the other side changed alone). */
22
+ export type SplitRow = {
23
+ left: NumberedLine | null;
24
+ right: NumberedLine | null;
25
+ } | DiffGap;
26
+ /** The rows side by side: a run of removed lines meets the added lines that follow it, one for one. */
27
+ export declare function splitRows(rows: readonly DiffRow[]): SplitRow[];
@@ -2,6 +2,8 @@ export { default as ActivityStream, type ActivityComment, type ActivityEvent, ty
2
2
  export { default as Avatar } from "./Avatar.vue";
3
3
  export { default as CommentThread, type CommentItem } from "./CommentThread.vue";
4
4
  export { default as Composer } from "./Composer.vue";
5
+ export { default as DiffView } from "./DiffView.vue";
6
+ export type { DiffLine } from "./diff";
5
7
  export { default as Divider } from "./Divider.vue";
6
8
  export { initialsFor } from "./initials";
7
9
  export { default as KeyValue } from "./KeyValue.vue";
@@ -9,5 +11,7 @@ export { default as KeyValueList, type KeyValueItem } from "./KeyValueList.vue";
9
11
  export { default as MicroLabel } from "./MicroLabel.vue";
10
12
  export { default as Money } from "./Money.vue";
11
13
  export { default as Panel } from "./Panel.vue";
14
+ export { default as PreviewFrame } from "./PreviewFrame.vue";
15
+ export { PREVIEW_WIDTHS, parsePreviewAction, previewScale, type PreviewAction, type PreviewCommand, type PreviewDevice } from "./previewFrame";
12
16
  export { default as StatSummary, type StatItem, type StatTone } from "./StatSummary.vue";
13
17
  export { default as Timestamp } from "./Timestamp.vue";