@ankhorage/zora 25.8.16 → 25.8.18

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 (195) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/capabilities/index.js +34 -59
  4. package/dist/capabilities/index.js.map +3 -3
  5. package/dist/features/date-picker/composition/DatePickerContent.d.ts.map +1 -1
  6. package/dist/features/date-picker/composition/DatePickerContent.js +1 -11
  7. package/dist/features/date-picker/composition/DatePickerContent.js.map +1 -1
  8. package/dist/features/date-picker/composition/DatePickerField.d.ts.map +1 -1
  9. package/dist/features/date-picker/composition/DatePickerField.js +2 -17
  10. package/dist/features/date-picker/composition/DatePickerField.js.map +1 -1
  11. package/dist/features/matrix-grid/application/getMatrixGridNextFocusId.js +7 -19
  12. package/dist/features/matrix-grid/application/getMatrixGridNextFocusId.js.map +1 -1
  13. package/dist/features/picker/composition/PickerField.d.ts +14 -0
  14. package/dist/features/picker/composition/PickerField.d.ts.map +1 -0
  15. package/dist/features/picker/composition/PickerField.js +21 -0
  16. package/dist/features/picker/composition/PickerField.js.map +1 -0
  17. package/dist/features/picker/composition/PickerHeader.d.ts +9 -0
  18. package/dist/features/picker/composition/PickerHeader.d.ts.map +1 -0
  19. package/dist/features/picker/composition/PickerHeader.js +14 -0
  20. package/dist/features/picker/composition/PickerHeader.js.map +1 -0
  21. package/dist/features/tabletop/meta.d.ts +46 -46
  22. package/dist/features/tabletop/meta.d.ts.map +1 -1
  23. package/dist/features/tabletop/meta.js +33 -58
  24. package/dist/features/tabletop/meta.js.map +1 -1
  25. package/dist/features/time-picker/composition/TimePickerContent.js +1 -12
  26. package/dist/features/time-picker/composition/TimePickerContent.js.map +1 -1
  27. package/dist/features/time-picker/composition/TimePickerField.d.ts.map +1 -1
  28. package/dist/features/time-picker/composition/TimePickerField.js +2 -17
  29. package/dist/features/time-picker/composition/TimePickerField.js.map +1 -1
  30. package/dist/features/typography/utils/headingThemeRecipeMeta.d.ts +5 -5
  31. package/dist/features/typography/utils/headingThemeRecipeMeta.d.ts.map +1 -1
  32. package/dist/features/typography/utils/headingThemeRecipeMeta.js +2 -19
  33. package/dist/features/typography/utils/headingThemeRecipeMeta.js.map +1 -1
  34. package/dist/features/typography/utils/resolveHeadingRecipe.d.ts.map +1 -1
  35. package/dist/features/typography/utils/resolveHeadingRecipe.js +11 -68
  36. package/dist/features/typography/utils/resolveHeadingRecipe.js.map +1 -1
  37. package/dist/features/typography/utils/resolveHeadingThemeRecipe.d.ts +4 -4
  38. package/dist/features/typography/utils/resolveHeadingThemeRecipe.d.ts.map +1 -1
  39. package/dist/features/typography/utils/resolveHeadingThemeRecipe.js +2 -33
  40. package/dist/features/typography/utils/resolveHeadingThemeRecipe.js.map +1 -1
  41. package/dist/features/typography/utils/resolveTextStyle.d.ts.map +1 -1
  42. package/dist/features/typography/utils/resolveTextStyle.js +11 -76
  43. package/dist/features/typography/utils/resolveTextStyle.js.map +1 -1
  44. package/dist/features/typography/utils/resolveTextThemeRecipe.d.ts +4 -4
  45. package/dist/features/typography/utils/resolveTextThemeRecipe.d.ts.map +1 -1
  46. package/dist/features/typography/utils/resolveTextThemeRecipe.js +2 -33
  47. package/dist/features/typography/utils/resolveTextThemeRecipe.js.map +1 -1
  48. package/dist/features/typography/utils/resolveTypographyStyleTokens.d.ts +21 -0
  49. package/dist/features/typography/utils/resolveTypographyStyleTokens.d.ts.map +1 -0
  50. package/dist/features/typography/utils/resolveTypographyStyleTokens.js +75 -0
  51. package/dist/features/typography/utils/resolveTypographyStyleTokens.js.map +1 -0
  52. package/dist/features/typography/utils/resolveTypographyThemeRecipeFields.d.ts +10 -0
  53. package/dist/features/typography/utils/resolveTypographyThemeRecipeFields.d.ts.map +1 -0
  54. package/dist/features/typography/utils/resolveTypographyThemeRecipeFields.js +19 -0
  55. package/dist/features/typography/utils/resolveTypographyThemeRecipeFields.js.map +1 -0
  56. package/dist/features/typography/utils/textThemeRecipeMeta.d.ts +6 -6
  57. package/dist/features/typography/utils/textThemeRecipeMeta.d.ts.map +1 -1
  58. package/dist/features/typography/utils/textThemeRecipeMeta.js +2 -19
  59. package/dist/features/typography/utils/textThemeRecipeMeta.js.map +1 -1
  60. package/dist/features/typography/utils/typographyThemeRecipeFields.d.ts +30 -0
  61. package/dist/features/typography/utils/typographyThemeRecipeFields.d.ts.map +1 -0
  62. package/dist/features/typography/utils/typographyThemeRecipeFields.js +23 -0
  63. package/dist/features/typography/utils/typographyThemeRecipeFields.js.map +1 -0
  64. package/dist/features/uploader/adapters/inbound/Uploader.d.ts.map +1 -1
  65. package/dist/features/uploader/adapters/inbound/Uploader.js +1 -16
  66. package/dist/features/uploader/adapters/inbound/Uploader.js.map +1 -1
  67. package/dist/features/uploader/application/use-cases/validateUploadAsset.d.ts.map +1 -1
  68. package/dist/features/uploader/application/use-cases/validateUploadAsset.js +1 -16
  69. package/dist/features/uploader/application/use-cases/validateUploadAsset.js.map +1 -1
  70. package/dist/features/web-component-artifact/composition/createWebDesiredStateWithNodeAsync.d.ts.map +1 -1
  71. package/dist/features/web-component-artifact/composition/createWebDesiredStateWithNodeAsync.js +3 -4
  72. package/dist/features/web-component-artifact/composition/createWebDesiredStateWithNodeAsync.js.map +1 -1
  73. package/dist/features/web-component-artifact/composition/readWebComponentPackageMetadataAsync.d.ts +8 -0
  74. package/dist/features/web-component-artifact/composition/readWebComponentPackageMetadataAsync.d.ts.map +1 -0
  75. package/dist/features/web-component-artifact/composition/readWebComponentPackageMetadataAsync.js +10 -0
  76. package/dist/features/web-component-artifact/composition/readWebComponentPackageMetadataAsync.js.map +1 -0
  77. package/dist/features/web-component-artifact/composition/synchronizeDeclaredWebComponentsWithNodeAsync.d.ts.map +1 -1
  78. package/dist/features/web-component-artifact/composition/synchronizeDeclaredWebComponentsWithNodeAsync.js +4 -6
  79. package/dist/features/web-component-artifact/composition/synchronizeDeclaredWebComponentsWithNodeAsync.js.map +1 -1
  80. package/package.json +14 -4
  81. package/src/features/date-picker/composition/DatePickerContent.tsx +1 -22
  82. package/src/features/date-picker/composition/DatePickerField.tsx +2 -31
  83. package/src/features/matrix-grid/application/getMatrixGridNextFocusId.ts +11 -22
  84. package/src/features/picker/composition/PickerField.tsx +61 -0
  85. package/src/features/picker/composition/PickerHeader.tsx +25 -0
  86. package/src/features/tabletop/meta.ts +34 -58
  87. package/src/features/time-picker/composition/TimePickerContent.tsx +1 -23
  88. package/src/features/time-picker/composition/TimePickerField.tsx +2 -31
  89. package/src/features/typography/utils/headingThemeRecipeMeta.ts +2 -19
  90. package/src/features/typography/utils/resolveHeadingRecipe.ts +12 -88
  91. package/src/features/typography/utils/resolveHeadingThemeRecipe.ts +3 -39
  92. package/src/features/typography/utils/resolveTextStyle.ts +10 -98
  93. package/src/features/typography/utils/resolveTextThemeRecipe.ts +3 -39
  94. package/src/features/typography/utils/resolveTypographyStyleTokens.ts +113 -0
  95. package/src/features/typography/utils/resolveTypographyThemeRecipeFields.ts +27 -0
  96. package/src/features/typography/utils/textThemeRecipeMeta.ts +2 -19
  97. package/src/features/typography/utils/typographyThemeRecipeFields.ts +23 -0
  98. package/src/features/uploader/adapters/inbound/Uploader.tsx +1 -20
  99. package/src/features/uploader/application/use-cases/validateUploadAsset.test.ts +2 -2
  100. package/src/features/uploader/application/use-cases/validateUploadAsset.ts +2 -20
  101. package/src/features/web-component-artifact/composition/createWebDesiredStateWithNodeAsync.ts +3 -6
  102. package/src/features/web-component-artifact/composition/readWebComponentPackageMetadataAsync.ts +18 -0
  103. package/src/features/web-component-artifact/composition/synchronizeDeclaredWebComponentsWithNodeAsync.ts +4 -8
  104. package/src/webPackageExports.test.ts +101 -0
  105. package/web-dist/chunks/{Accordion-rqr10gn4.js → Accordion-1495be5z.js} +2 -2
  106. package/web-dist/chunks/{Accordion-m2hcc8g4.js → Accordion-3qphhsb4.js} +1 -1
  107. package/web-dist/chunks/{Accordion-gn8ptzwb.js → Accordion-4x8gdqqs.js} +1 -1
  108. package/web-dist/chunks/{Accordion-9aczb0k2.js → Accordion-58bpmzdj.js} +2 -2
  109. package/web-dist/chunks/{Accordion-2jy53kzk.js → Accordion-69c4pfz2.js} +2 -2
  110. package/web-dist/chunks/{Accordion-rqhh2m5b.js → Accordion-7n93d7fa.js} +1 -1
  111. package/web-dist/chunks/{Accordion-m6mp8aea.js → Accordion-a42brn0p.js} +1 -1
  112. package/web-dist/chunks/{Accordion-g08740h4.js → Accordion-c912kzs0.js} +1 -1
  113. package/web-dist/chunks/{Accordion-tyh8jj9d.js → Accordion-cbbafww1.js} +1 -1
  114. package/web-dist/chunks/{Accordion-11ej93t5.js → Accordion-cjjg81ry.js} +2 -2
  115. package/web-dist/chunks/{Accordion-vkd002gw.js → Accordion-d0bebw9j.js} +3 -3
  116. package/web-dist/chunks/{Accordion-vjcd5kxc.js → Accordion-gntmfcmz.js} +1 -1
  117. package/web-dist/chunks/{Accordion-wqyrrptg.js → Accordion-jyemxzat.js} +1 -1
  118. package/web-dist/chunks/{Accordion-p7d5svfq.js → Accordion-kmwhjw1k.js} +1 -1
  119. package/web-dist/chunks/{Accordion-26prtnm7.js → Accordion-ptxa6trg.js} +1 -1
  120. package/web-dist/chunks/{Accordion-4yq92mxp.js → Accordion-ve81xazy.js} +1 -1
  121. package/web-dist/chunks/Accordion-vnb3vntm.js +79 -0
  122. package/web-dist/chunks/{Accordion-9rnsg9pk.js → Accordion-vqx3exsq.js} +129 -243
  123. package/web-dist/chunks/{Accordion-1hbt9k69.js → Accordion-w95t2pr3.js} +1 -1
  124. package/web-dist/chunks/{Accordion-g2aqhct0.js → Accordion-z5dpzw3g.js} +2 -2
  125. package/web-dist/chunks/{Accordion-a4pz3vjj.js → Accordion-zf1g5422.js} +1 -1
  126. package/web-dist/components/accordion/Accordion.js +2 -2
  127. package/web-dist/components/accordion-item/AccordionItem.js +2 -2
  128. package/web-dist/components/app-bar/AppBar.js +2 -2
  129. package/web-dist/components/app-header/AppHeader.js +2 -2
  130. package/web-dist/components/auth-screen/AuthScreen.js +4 -4
  131. package/web-dist/components/avatar/Avatar.js +2 -2
  132. package/web-dist/components/avatar-group/AvatarGroup.js +2 -2
  133. package/web-dist/components/barcode-scanner-view/BarcodeScannerView.js +4 -4
  134. package/web-dist/components/breadcrumbs/Breadcrumbs.js +1 -1
  135. package/web-dist/components/camera-permission-view/CameraPermissionView.js +4 -4
  136. package/web-dist/components/card/Card.js +3 -3
  137. package/web-dist/components/chat-list-item/ChatListItem.js +3 -3
  138. package/web-dist/components/checkbox/Checkbox.js +2 -2
  139. package/web-dist/components/checkbox-group/CheckboxGroup.js +2 -2
  140. package/web-dist/components/chip/Chip.js +2 -2
  141. package/web-dist/components/chip-group/ChipGroup.js +2 -2
  142. package/web-dist/components/collection-editor/CollectionEditor.js +3 -3
  143. package/web-dist/components/content-rail/ContentRail.js +1 -1
  144. package/web-dist/components/data-table/DataTable.js +7 -7
  145. package/web-dist/components/date-picker/DatePicker.js +12 -49
  146. package/web-dist/components/dialog/Dialog.js +2 -2
  147. package/web-dist/components/empty-state/EmptyState.js +4 -4
  148. package/web-dist/components/explorer/Explorer.js +2 -2
  149. package/web-dist/components/field/Field.js +2 -2
  150. package/web-dist/components/file-explorer/FileExplorer.js +2 -2
  151. package/web-dist/components/flat-list/FlatList.js +3 -3
  152. package/web-dist/components/forgot-password-form/ForgotPasswordForm.js +4 -4
  153. package/web-dist/components/form/Form.js +3 -3
  154. package/web-dist/components/form-actions/FormActions.js +3 -3
  155. package/web-dist/components/form-error/FormError.js +3 -3
  156. package/web-dist/components/heading/Heading.js +1 -1
  157. package/web-dist/components/hero/Hero.js +3 -3
  158. package/web-dist/components/list/List.js +3 -3
  159. package/web-dist/components/list-item/ListItem.js +3 -3
  160. package/web-dist/components/list-section/ListSection.js +3 -3
  161. package/web-dist/components/matrix-grid/MatrixGrid.js +5 -17
  162. package/web-dist/components/media-card/MediaCard.js +3 -3
  163. package/web-dist/components/media-explorer/MediaExplorer.js +2 -2
  164. package/web-dist/components/message-bubble/MessageBubble.js +3 -3
  165. package/web-dist/components/metric-card/MetricCard.js +3 -3
  166. package/web-dist/components/missing-element/MissingElement.js +1 -1
  167. package/web-dist/components/o-auth-provider-button/OAuthProviderButton.js +4 -4
  168. package/web-dist/components/o-auth-provider-list/OAuthProviderList.js +4 -4
  169. package/web-dist/components/otp-form/OtpForm.js +4 -4
  170. package/web-dist/components/pagination/Pagination.js +1 -1
  171. package/web-dist/components/palette-item/PaletteItem.js +3 -3
  172. package/web-dist/components/post-card/PostCard.js +3 -3
  173. package/web-dist/components/product-card/ProductCard.js +3 -3
  174. package/web-dist/components/progress/Progress.js +2 -2
  175. package/web-dist/components/progress-ring/ProgressRing.js +2 -2
  176. package/web-dist/components/radio/Radio.js +2 -2
  177. package/web-dist/components/radio-group/RadioGroup.js +2 -2
  178. package/web-dist/components/reader/Reader.js +4 -4
  179. package/web-dist/components/scan-overlay/ScanOverlay.js +4 -4
  180. package/web-dist/components/screen-section/ScreenSection.js +2 -2
  181. package/web-dist/components/section-header/SectionHeader.js +2 -2
  182. package/web-dist/components/section-list/SectionList.js +3 -3
  183. package/web-dist/components/sign-in-form/SignInForm.js +4 -4
  184. package/web-dist/components/sign-up-form/SignUpForm.js +4 -4
  185. package/web-dist/components/skeleton/Skeleton.js +6 -6
  186. package/web-dist/components/skeleton-card/SkeletonCard.js +6 -6
  187. package/web-dist/components/skeleton-list/SkeletonList.js +6 -6
  188. package/web-dist/components/skeleton-text/SkeletonText.js +6 -6
  189. package/web-dist/components/text/Text.js +1 -1
  190. package/web-dist/components/time-picker/TimePicker.js +12 -51
  191. package/web-dist/components/timeline/Timeline.js +1 -1
  192. package/web-dist/components/toolbar/Toolbar.js +3 -3
  193. package/web-dist/components/tree-item/TreeItem.js +3 -3
  194. package/web-dist/components/uploader/Uploader.js +21 -37
  195. package/web-dist/manifest.json +204 -202
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerContent.d.ts","sourceRoot":"","sources":["../../../../src/features/date-picker/composition/DatePickerContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AASlE,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,iBAAiB,EACjB,KAAK,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,GACN,EAAE,sBAAsB,qBA+BxB;AAED,UAAU,sBAAuB,SAAQ,IAAI,CAC3C,eAAe,EACf,aAAa,GAAG,mBAAmB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAC3F;IACC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;CACjC"}
1
+ {"version":3,"file":"DatePickerContent.d.ts","sourceRoot":"","sources":["../../../../src/features/date-picker/composition/DatePickerContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAUlE,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,iBAAiB,EACjB,KAAK,EACL,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,GACN,EAAE,sBAAsB,qBA+BxB;AAED,UAAU,sBAAuB,SAAQ,IAAI,CAC3C,eAAe,EACf,aAAa,GAAG,mBAAmB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAC3F;IACC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;CACjC"}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Button } from '../../button/public';
3
3
  import { View } from '../../layout/public';
4
+ import { PickerHeader } from '../../picker/composition/PickerHeader';
4
5
  import { Text } from '../../typography/public';
5
6
  import { formatLocalDate, parseLocalDate } from '../utils/localDate';
6
7
  const WEEKDAY_LABELS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
@@ -21,17 +22,6 @@ export function DatePickerContent({ description, interactionPolicy, label, maxDa
21
22
  </Button>
22
23
  </View>);
23
24
  }
24
- /*** Renders the shared title block used by picker overlays. */
25
- function PickerHeader({ description, title, }) {
26
- return (<View gap="xxs">
27
- <Text align="center" variant="label" weight="semiBold">
28
- {title}
29
- </Text>
30
- {description ? (<Text align="center" emphasis="muted" variant="bodySmall">
31
- {description}
32
- </Text>) : null}
33
- </View>);
34
- }
35
25
  /*** Renders previous and next month controls for the calendar. */
36
26
  function DatePickerMonthNavigation({ displayMonth, interactionPolicy, maxDate, minDate, onMonthChange, }) {
37
27
  const previousMonth = new Date(displayMonth.getFullYear(), displayMonth.getMonth() - 1, 1);
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerContent.js","sourceRoot":"","sources":["../../../../src/features/date-picker/composition/DatePickerContent.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type { DatePickerProps } from '../../../types/date-picker';\nimport { Button } from '../../button/public';\nimport { View } from '../../layout/public';\nimport { Text } from '../../typography/public';\nimport { formatLocalDate, parseLocalDate } from '../utils/localDate';\n\nconst WEEKDAY_LABELS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] as const;\nconst DAY_CELL_WIDTH = 42;\n\n/*** Renders the shared calendar content used by native BottomSheet and web Popover hosts. */\nexport function DatePickerContent({\n description,\n interactionPolicy,\n label,\n maxDate,\n minDate,\n onDismiss,\n onSelect,\n testID,\n value,\n}: DatePickerContentProps) {\n const [displayMonth, setDisplayMonth] = React.useState(() => resolveInitialMonth(value, minDate));\n const monthDays = React.useMemo(() => createMonthDays(displayMonth), [displayMonth]);\n const resolvedMaxDate = React.useMemo(() => parseLocalDate(maxDate), [maxDate]);\n const resolvedMinDate = React.useMemo(() => parseLocalDate(minDate), [minDate]);\n\n return (\n <View gap=\"m\" p=\"m\" testID={testID ? `${testID}-content` : undefined}>\n <PickerHeader description={description} title={label ?? 'Choose date'} />\n <DatePickerMonthNavigation\n displayMonth={displayMonth}\n interactionPolicy={interactionPolicy}\n maxDate={resolvedMaxDate}\n minDate={resolvedMinDate}\n onMonthChange={setDisplayMonth}\n />\n <DatePickerWeekdays />\n <DatePickerCalendar\n interactionPolicy={interactionPolicy}\n maxDate={resolvedMaxDate}\n minDate={resolvedMinDate}\n monthDays={monthDays}\n onSelect={onSelect}\n testID={testID}\n value={value}\n />\n <Button fullWidth interactionPolicy={interactionPolicy} onPress={onDismiss} variant=\"ghost\">\n Cancel\n </Button>\n </View>\n );\n}\n\ninterface DatePickerContentProps extends Pick<\n DatePickerProps,\n 'description' | 'interactionPolicy' | 'label' | 'maxDate' | 'minDate' | 'testID' | 'value'\n> {\n onDismiss: () => void;\n onSelect: (value: Date) => void;\n}\n\n/*** Renders the shared title block used by picker overlays. */\nfunction PickerHeader({\n description,\n title,\n}: {\n description: React.ReactNode | undefined;\n title: React.ReactNode;\n}) {\n return (\n <View gap=\"xxs\">\n <Text align=\"center\" variant=\"label\" weight=\"semiBold\">\n {title}\n </Text>\n {description ? (\n <Text align=\"center\" emphasis=\"muted\" variant=\"bodySmall\">\n {description}\n </Text>\n ) : null}\n </View>\n );\n}\n\n/*** Renders previous and next month controls for the calendar. */\nfunction DatePickerMonthNavigation({\n displayMonth,\n interactionPolicy,\n maxDate,\n minDate,\n onMonthChange,\n}: {\n displayMonth: Date;\n interactionPolicy: DatePickerProps['interactionPolicy'];\n maxDate: Date | undefined;\n minDate: Date | undefined;\n onMonthChange: (month: Date) => void;\n}) {\n const previousMonth = new Date(displayMonth.getFullYear(), displayMonth.getMonth() - 1, 1);\n const nextMonth = new Date(displayMonth.getFullYear(), displayMonth.getMonth() + 1, 1);\n\n return (\n <View align=\"center\" direction=\"row\" justify=\"space-between\">\n <Button\n disabled={!canNavigateToMonth(previousMonth, minDate, maxDate)}\n interactionPolicy={interactionPolicy}\n onPress={() => onMonthChange(previousMonth)}\n size=\"s\"\n variant=\"ghost\"\n >\n Previous\n </Button>\n <Text align=\"center\" variant=\"label\" weight=\"semiBold\">\n {formatMonthLabel(displayMonth)}\n </Text>\n <Button\n disabled={!canNavigateToMonth(nextMonth, minDate, maxDate)}\n interactionPolicy={interactionPolicy}\n onPress={() => onMonthChange(nextMonth)}\n size=\"s\"\n variant=\"ghost\"\n >\n Next\n </Button>\n </View>\n );\n}\n\n/*** Renders weekday headings for the calendar grid. */\nfunction DatePickerWeekdays() {\n return (\n <View direction=\"row\" justify=\"space-between\">\n {WEEKDAY_LABELS.map((weekday) => (\n <View key={weekday} width={DAY_CELL_WIDTH}>\n <Text align=\"center\" emphasis=\"muted\" variant=\"caption\" weight=\"semiBold\">\n {weekday}\n </Text>\n </View>\n ))}\n </View>\n );\n}\n\n/*** Renders selectable day cells for the current calendar month. */\nfunction DatePickerCalendar({\n interactionPolicy,\n maxDate,\n minDate,\n monthDays,\n onSelect,\n testID,\n value,\n}: {\n interactionPolicy: DatePickerProps['interactionPolicy'];\n maxDate: Date | undefined;\n minDate: Date | undefined;\n monthDays: readonly (Date | null)[];\n onSelect: (value: Date) => void;\n testID: string | undefined;\n value: DatePickerProps['value'];\n}) {\n return (\n <View direction=\"row\" gap=\"xs\" wrap=\"wrap\">\n {monthDays.map((day, index) => {\n if (!day) return <View key={`empty-${index}`} width={DAY_CELL_WIDTH} />;\n const selected = isSameLocalDay(value, day);\n return (\n <View key={day.toISOString()} width={DAY_CELL_WIDTH}>\n <Button\n color={selected ? 'primary' : 'neutral'}\n disabled={isDateDisabled(day, minDate, maxDate)}\n interactionPolicy={interactionPolicy}\n onPress={() => onSelect(day)}\n size=\"s\"\n testID={testID ? `${testID}-day-${day.getDate()}` : undefined}\n variant={selected ? 'solid' : 'ghost'}\n >\n {day.getDate()}\n </Button>\n </View>\n );\n })}\n </View>\n );\n}\n\n/*** Compares a serialized date to one local calendar day. */\nfunction isSameLocalDay(left: string | null, right: Date): boolean {\n return left === formatLocalDate(right);\n}\n\n/*** Normalizes a Date to the start of its local calendar day. */\nfunction startOfLocalDay(value: Date): Date {\n return new Date(value.getFullYear(), value.getMonth(), value.getDate());\n}\n\n/*** Reports whether one local calendar day precedes another. */\nfunction isBeforeLocalDay(left: Date, right: Date): boolean {\n return startOfLocalDay(left).getTime() < startOfLocalDay(right).getTime();\n}\n\n/*** Reports whether one local calendar day follows another. */\nfunction isAfterLocalDay(left: Date, right: Date): boolean {\n return startOfLocalDay(left).getTime() > startOfLocalDay(right).getTime();\n}\n\n/*** Reports whether a date falls outside the configured picker range. */\nfunction isDateDisabled(\n value: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n): boolean {\n if (minDate && isBeforeLocalDay(value, minDate)) return true;\n if (maxDate && isAfterLocalDay(value, maxDate)) return true;\n return false;\n}\n\n/*** Formats the current calendar month for the picker heading. */\nfunction formatMonthLabel(value: Date): string {\n return value.toLocaleDateString(undefined, { month: 'long', year: 'numeric' });\n}\n\n/*** Builds the padded calendar grid for one month. */\nfunction createMonthDays(month: Date): (Date | null)[] {\n const firstDay = new Date(month.getFullYear(), month.getMonth(), 1);\n const dayCount = new Date(month.getFullYear(), month.getMonth() + 1, 0).getDate();\n const populatedLength = firstDay.getDay() + dayCount;\n const paddedLength = Math.ceil(populatedLength / 7) * 7;\n\n return Array.from({ length: paddedLength }, (_, index) =>\n index < firstDay.getDay()\n ? null\n : new Date(month.getFullYear(), month.getMonth(), index - firstDay.getDay() + 1),\n );\n}\n\n/*** Resolves the month initially shown by the calendar. */\nfunction resolveInitialMonth(value: string | null, minDate: string | undefined): Date {\n const base = parseLocalDate(value) ?? parseLocalDate(minDate) ?? new Date();\n return new Date(base.getFullYear(), base.getMonth(), 1);\n}\n\n/*** Reports whether the configured range intersects a candidate month. */\nfunction canNavigateToMonth(\n month: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n): boolean {\n const firstDay = new Date(month.getFullYear(), month.getMonth(), 1);\n const lastDay = new Date(month.getFullYear(), month.getMonth() + 1, 0);\n\n if (maxDate && isAfterLocalDay(firstDay, maxDate)) return false;\n if (minDate && isBeforeLocalDay(lastDay, minDate)) return false;\n return true;\n}\n"]}
1
+ {"version":3,"file":"DatePickerContent.js","sourceRoot":"","sources":["../../../../src/features/date-picker/composition/DatePickerContent.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport type { DatePickerProps } from '../../../types/date-picker';\nimport { Button } from '../../button/public';\nimport { View } from '../../layout/public';\nimport { PickerHeader } from '../../picker/composition/PickerHeader';\nimport { Text } from '../../typography/public';\nimport { formatLocalDate, parseLocalDate } from '../utils/localDate';\n\nconst WEEKDAY_LABELS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] as const;\nconst DAY_CELL_WIDTH = 42;\n\n/*** Renders the shared calendar content used by native BottomSheet and web Popover hosts. */\nexport function DatePickerContent({\n description,\n interactionPolicy,\n label,\n maxDate,\n minDate,\n onDismiss,\n onSelect,\n testID,\n value,\n}: DatePickerContentProps) {\n const [displayMonth, setDisplayMonth] = React.useState(() => resolveInitialMonth(value, minDate));\n const monthDays = React.useMemo(() => createMonthDays(displayMonth), [displayMonth]);\n const resolvedMaxDate = React.useMemo(() => parseLocalDate(maxDate), [maxDate]);\n const resolvedMinDate = React.useMemo(() => parseLocalDate(minDate), [minDate]);\n\n return (\n <View gap=\"m\" p=\"m\" testID={testID ? `${testID}-content` : undefined}>\n <PickerHeader description={description} title={label ?? 'Choose date'} />\n <DatePickerMonthNavigation\n displayMonth={displayMonth}\n interactionPolicy={interactionPolicy}\n maxDate={resolvedMaxDate}\n minDate={resolvedMinDate}\n onMonthChange={setDisplayMonth}\n />\n <DatePickerWeekdays />\n <DatePickerCalendar\n interactionPolicy={interactionPolicy}\n maxDate={resolvedMaxDate}\n minDate={resolvedMinDate}\n monthDays={monthDays}\n onSelect={onSelect}\n testID={testID}\n value={value}\n />\n <Button fullWidth interactionPolicy={interactionPolicy} onPress={onDismiss} variant=\"ghost\">\n Cancel\n </Button>\n </View>\n );\n}\n\ninterface DatePickerContentProps extends Pick<\n DatePickerProps,\n 'description' | 'interactionPolicy' | 'label' | 'maxDate' | 'minDate' | 'testID' | 'value'\n> {\n onDismiss: () => void;\n onSelect: (value: Date) => void;\n}\n\n/*** Renders previous and next month controls for the calendar. */\nfunction DatePickerMonthNavigation({\n displayMonth,\n interactionPolicy,\n maxDate,\n minDate,\n onMonthChange,\n}: {\n displayMonth: Date;\n interactionPolicy: DatePickerProps['interactionPolicy'];\n maxDate: Date | undefined;\n minDate: Date | undefined;\n onMonthChange: (month: Date) => void;\n}) {\n const previousMonth = new Date(displayMonth.getFullYear(), displayMonth.getMonth() - 1, 1);\n const nextMonth = new Date(displayMonth.getFullYear(), displayMonth.getMonth() + 1, 1);\n\n return (\n <View align=\"center\" direction=\"row\" justify=\"space-between\">\n <Button\n disabled={!canNavigateToMonth(previousMonth, minDate, maxDate)}\n interactionPolicy={interactionPolicy}\n onPress={() => onMonthChange(previousMonth)}\n size=\"s\"\n variant=\"ghost\"\n >\n Previous\n </Button>\n <Text align=\"center\" variant=\"label\" weight=\"semiBold\">\n {formatMonthLabel(displayMonth)}\n </Text>\n <Button\n disabled={!canNavigateToMonth(nextMonth, minDate, maxDate)}\n interactionPolicy={interactionPolicy}\n onPress={() => onMonthChange(nextMonth)}\n size=\"s\"\n variant=\"ghost\"\n >\n Next\n </Button>\n </View>\n );\n}\n\n/*** Renders weekday headings for the calendar grid. */\nfunction DatePickerWeekdays() {\n return (\n <View direction=\"row\" justify=\"space-between\">\n {WEEKDAY_LABELS.map((weekday) => (\n <View key={weekday} width={DAY_CELL_WIDTH}>\n <Text align=\"center\" emphasis=\"muted\" variant=\"caption\" weight=\"semiBold\">\n {weekday}\n </Text>\n </View>\n ))}\n </View>\n );\n}\n\n/*** Renders selectable day cells for the current calendar month. */\nfunction DatePickerCalendar({\n interactionPolicy,\n maxDate,\n minDate,\n monthDays,\n onSelect,\n testID,\n value,\n}: {\n interactionPolicy: DatePickerProps['interactionPolicy'];\n maxDate: Date | undefined;\n minDate: Date | undefined;\n monthDays: readonly (Date | null)[];\n onSelect: (value: Date) => void;\n testID: string | undefined;\n value: DatePickerProps['value'];\n}) {\n return (\n <View direction=\"row\" gap=\"xs\" wrap=\"wrap\">\n {monthDays.map((day, index) => {\n if (!day) return <View key={`empty-${index}`} width={DAY_CELL_WIDTH} />;\n const selected = isSameLocalDay(value, day);\n return (\n <View key={day.toISOString()} width={DAY_CELL_WIDTH}>\n <Button\n color={selected ? 'primary' : 'neutral'}\n disabled={isDateDisabled(day, minDate, maxDate)}\n interactionPolicy={interactionPolicy}\n onPress={() => onSelect(day)}\n size=\"s\"\n testID={testID ? `${testID}-day-${day.getDate()}` : undefined}\n variant={selected ? 'solid' : 'ghost'}\n >\n {day.getDate()}\n </Button>\n </View>\n );\n })}\n </View>\n );\n}\n\n/*** Compares a serialized date to one local calendar day. */\nfunction isSameLocalDay(left: string | null, right: Date): boolean {\n return left === formatLocalDate(right);\n}\n\n/*** Normalizes a Date to the start of its local calendar day. */\nfunction startOfLocalDay(value: Date): Date {\n return new Date(value.getFullYear(), value.getMonth(), value.getDate());\n}\n\n/*** Reports whether one local calendar day precedes another. */\nfunction isBeforeLocalDay(left: Date, right: Date): boolean {\n return startOfLocalDay(left).getTime() < startOfLocalDay(right).getTime();\n}\n\n/*** Reports whether one local calendar day follows another. */\nfunction isAfterLocalDay(left: Date, right: Date): boolean {\n return startOfLocalDay(left).getTime() > startOfLocalDay(right).getTime();\n}\n\n/*** Reports whether a date falls outside the configured picker range. */\nfunction isDateDisabled(\n value: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n): boolean {\n if (minDate && isBeforeLocalDay(value, minDate)) return true;\n if (maxDate && isAfterLocalDay(value, maxDate)) return true;\n return false;\n}\n\n/*** Formats the current calendar month for the picker heading. */\nfunction formatMonthLabel(value: Date): string {\n return value.toLocaleDateString(undefined, { month: 'long', year: 'numeric' });\n}\n\n/*** Builds the padded calendar grid for one month. */\nfunction createMonthDays(month: Date): (Date | null)[] {\n const firstDay = new Date(month.getFullYear(), month.getMonth(), 1);\n const dayCount = new Date(month.getFullYear(), month.getMonth() + 1, 0).getDate();\n const populatedLength = firstDay.getDay() + dayCount;\n const paddedLength = Math.ceil(populatedLength / 7) * 7;\n\n return Array.from({ length: paddedLength }, (_, index) =>\n index < firstDay.getDay()\n ? null\n : new Date(month.getFullYear(), month.getMonth(), index - firstDay.getDay() + 1),\n );\n}\n\n/*** Resolves the month initially shown by the calendar. */\nfunction resolveInitialMonth(value: string | null, minDate: string | undefined): Date {\n const base = parseLocalDate(value) ?? parseLocalDate(minDate) ?? new Date();\n return new Date(base.getFullYear(), base.getMonth(), 1);\n}\n\n/*** Reports whether the configured range intersects a candidate month. */\nfunction canNavigateToMonth(\n month: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n): boolean {\n const firstDay = new Date(month.getFullYear(), month.getMonth(), 1);\n const lastDay = new Date(month.getFullYear(), month.getMonth() + 1, 0);\n\n if (maxDate && isAfterLocalDay(firstDay, maxDate)) return false;\n if (minDate && isBeforeLocalDay(lastDay, minDate)) return false;\n return true;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerField.d.ts","sourceRoot":"","sources":["../../../../src/features/date-picker/composition/DatePickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAIlE,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,GACP,EAAE,oBAAoB,qBAatB;AAED,UAAU,oBAAqB,SAAQ,IAAI,CACzC,eAAe,EACf,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CACvE;IACC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B"}
1
+ {"version":3,"file":"DatePickerField.d.ts","sourceRoot":"","sources":["../../../../src/features/date-picker/composition/DatePickerField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,GACP,EAAE,oBAAoB,qBAEtB;AAED,UAAU,oBAAqB,SAAQ,IAAI,CACzC,eAAe,EACf,aAAa,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CACvE;IACC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B"}
@@ -1,21 +1,6 @@
1
- import { Field } from '@ankhorage/surface';
2
- import { View } from '../../layout/public';
3
- import { Text } from '../../typography/public';
1
+ import { PickerField } from '../../picker/composition/PickerField';
4
2
  /*** Renders the shared DatePicker field frame around a platform-specific trigger. */
5
3
  export function DatePickerField({ children, description, disabled, error, label, required, testID, }) {
6
- return (<Field disabled={disabled} errorText={error} invalid={Boolean(error)} label={label ? renderLabel(label, description) : undefined} required={required} testID={testID}>
7
- {children}
8
- </Field>);
9
- }
10
- /*** Renders the picker label and optional supporting description. */
11
- function renderLabel(label, description) {
12
- return (<View gap="xs">
13
- <Text variant="label" weight="semiBold">
14
- {label}
15
- </Text>
16
- {description ? (<Text emphasis="muted" variant="bodySmall">
17
- {description}
18
- </Text>) : null}
19
- </View>);
4
+ return <PickerField {...{ children, description, disabled, error, label, required, testID }}/>;
20
5
  }
21
6
  //# sourceMappingURL=DatePickerField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerField.js","sourceRoot":"","sources":["../../../../src/features/date-picker/composition/DatePickerField.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAI3C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,qFAAqF;AACrF,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,GACe;IACrB,OAAO,CACL,CAAC,KAAK,CACJ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,SAAS,CAAC,CAAC,KAAK,CAAC,CACjB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CACxB,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAC3D,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,MAAM,CAAC,CAAC,MAAM,CAAC,CAEf;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,KAAK,CAAC,CACT,CAAC;AACJ,CAAC;AASD,qEAAqE;AACrE,SAAS,WAAW,CAAC,KAAsB,EAAE,WAAwC;IACnF,OAAO,CACL,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CACZ;MAAA,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CACrC;QAAA,CAAC,KAAK,CACR;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,WAAW,CAAC,CAAC,CAAC,CACb,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CACxC;UAAA,CAAC,WAAW,CACd;QAAA,EAAE,IAAI,CAAC,CACR,CAAC,CAAC,CAAC,IAAI,CACV;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC","sourcesContent":["import { Field } from '@ankhorage/surface';\nimport type React from 'react';\n\nimport type { DatePickerProps } from '../../../types/date-picker';\nimport { View } from '../../layout/public';\nimport { Text } from '../../typography/public';\n\n/*** Renders the shared DatePicker field frame around a platform-specific trigger. */\nexport function DatePickerField({\n children,\n description,\n disabled,\n error,\n label,\n required,\n testID,\n}: DatePickerFieldProps) {\n return (\n <Field\n disabled={disabled}\n errorText={error}\n invalid={Boolean(error)}\n label={label ? renderLabel(label, description) : undefined}\n required={required}\n testID={testID}\n >\n {children}\n </Field>\n );\n}\n\ninterface DatePickerFieldProps extends Pick<\n DatePickerProps,\n 'description' | 'disabled' | 'error' | 'label' | 'required' | 'testID'\n> {\n children: React.ReactNode;\n}\n\n/*** Renders the picker label and optional supporting description. */\nfunction renderLabel(label: React.ReactNode, description: React.ReactNode | undefined) {\n return (\n <View gap=\"xs\">\n <Text variant=\"label\" weight=\"semiBold\">\n {label}\n </Text>\n {description ? (\n <Text emphasis=\"muted\" variant=\"bodySmall\">\n {description}\n </Text>\n ) : null}\n </View>\n );\n}\n"]}
1
+ {"version":3,"file":"DatePickerField.js","sourceRoot":"","sources":["../../../../src/features/date-picker/composition/DatePickerField.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,qFAAqF;AACrF,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,GACe;IACrB,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAG,CAAC;AAClG,CAAC","sourcesContent":["import type React from 'react';\n\nimport type { DatePickerProps } from '../../../types/date-picker';\nimport { PickerField } from '../../picker/composition/PickerField';\n\n/*** Renders the shared DatePicker field frame around a platform-specific trigger. */\nexport function DatePickerField({\n children,\n description,\n disabled,\n error,\n label,\n required,\n testID,\n}: DatePickerFieldProps) {\n return <PickerField {...{ children, description, disabled, error, label, required, testID }} />;\n}\n\ninterface DatePickerFieldProps extends Pick<\n DatePickerProps,\n 'description' | 'disabled' | 'error' | 'label' | 'required' | 'testID'\n> {\n children: React.ReactNode;\n}\n"]}
@@ -25,33 +25,21 @@ function findDirectionalNeighbour(entries, current, axis, direction) {
25
25
  if (!entries)
26
26
  return undefined;
27
27
  const coordinate = getAxisCoordinate(current, axis);
28
- const insertionIndex = findFirstGreaterOrEqual(entries, coordinate, axis);
28
+ const insertionIndex = findFirstAtOrAfter(entries, coordinate, axis, false);
29
29
  if (direction === -1)
30
30
  return insertionIndex === 0 ? undefined : entries[insertionIndex - 1];
31
- return entries[findFirstGreater(entries, coordinate, axis)];
31
+ return entries[findFirstAtOrAfter(entries, coordinate, axis, true)];
32
32
  }
33
- /*** Locate the first entry strictly after a matrix coordinate in a sorted sparse axis. */
34
- function findFirstGreater(entries, coordinate, axis) {
33
+ /*** Locates the first entry at or after a matrix coordinate in a sorted sparse axis. */
34
+ function findFirstAtOrAfter(entries, coordinate, axis, strictlyAfter) {
35
35
  let lower = 0;
36
36
  let upper = entries.length;
37
37
  while (lower < upper) {
38
38
  const middle = Math.floor((lower + upper) / 2);
39
39
  const entry = entries.at(middle);
40
- if (entry && getAxisCoordinate(entry, axis) <= coordinate)
41
- lower = middle + 1;
42
- else
43
- upper = middle;
44
- }
45
- return lower;
46
- }
47
- /*** Locate the first index at or after a matrix coordinate in a sorted sparse axis. */
48
- function findFirstGreaterOrEqual(entries, coordinate, axis) {
49
- let lower = 0;
50
- let upper = entries.length;
51
- while (lower < upper) {
52
- const middle = Math.floor((lower + upper) / 2);
53
- const entry = entries.at(middle);
54
- if (entry && getAxisCoordinate(entry, axis) < coordinate)
40
+ const entryCoordinate = entry ? getAxisCoordinate(entry, axis) : undefined;
41
+ if (entryCoordinate !== undefined &&
42
+ (strictlyAfter ? entryCoordinate <= coordinate : entryCoordinate < coordinate))
55
43
  lower = middle + 1;
56
44
  else
57
45
  upper = middle;
@@ -1 +1 @@
1
- {"version":3,"file":"getMatrixGridNextFocusId.js","sourceRoot":"","sources":["../../../../src/features/matrix-grid/application/getMatrixGridNextFocusId.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n MatrixGridSparseIndex,\n MatrixGridSparseIndexEntry,\n} from './createMatrixGridSparseIndex';\n\n/*** Resolve arrow-key focus among existing sparse cells without inventing placeholder geometry. */\nexport function getMatrixGridNextFocusId(\n index: MatrixGridSparseIndex,\n currentId: string | null,\n key: string,\n): string | null {\n const current = currentId === null ? undefined : index.positionById.get(currentId);\n if (!current) return index.firstId;\n\n return resolveDirectionalCandidate(index, current, key)?.id ?? current.id;\n}\n\n/*** Find the closest existing sparse cell along the requested matrix axis. */\nfunction resolveDirectionalCandidate(\n index: MatrixGridSparseIndex,\n current: MatrixGridSparseIndexEntry,\n key: string,\n): MatrixGridSparseIndexEntry | undefined {\n switch (key) {\n case 'ArrowLeft':\n return findDirectionalNeighbour(\n index.entriesByRow.get(current.rowIndex),\n current,\n 'columnIndex',\n -1,\n );\n case 'ArrowRight':\n return findDirectionalNeighbour(\n index.entriesByRow.get(current.rowIndex),\n current,\n 'columnIndex',\n 1,\n );\n case 'ArrowUp':\n return findDirectionalNeighbour(\n index.entriesByColumn.get(current.columnIndex),\n current,\n 'rowIndex',\n -1,\n );\n case 'ArrowDown':\n return findDirectionalNeighbour(\n index.entriesByColumn.get(current.columnIndex),\n current,\n 'rowIndex',\n 1,\n );\n default:\n return undefined;\n }\n}\n\n/*** Read the nearest strictly directional neighbour from a pre-sorted sparse axis. */\nfunction findDirectionalNeighbour(\n entries: readonly MatrixGridSparseIndexEntry[] | undefined,\n current: MatrixGridSparseIndexEntry,\n axis: 'columnIndex' | 'rowIndex',\n direction: -1 | 1,\n): MatrixGridSparseIndexEntry | undefined {\n if (!entries) return undefined;\n const coordinate = getAxisCoordinate(current, axis);\n const insertionIndex = findFirstGreaterOrEqual(entries, coordinate, axis);\n if (direction === -1) return insertionIndex === 0 ? undefined : entries[insertionIndex - 1];\n return entries[findFirstGreater(entries, coordinate, axis)];\n}\n\n/*** Locate the first entry strictly after a matrix coordinate in a sorted sparse axis. */\nfunction findFirstGreater(\n entries: readonly MatrixGridSparseIndexEntry[],\n coordinate: number,\n axis: 'columnIndex' | 'rowIndex',\n): number {\n let lower = 0;\n let upper = entries.length;\n while (lower < upper) {\n const middle = Math.floor((lower + upper) / 2);\n const entry = entries.at(middle);\n if (entry && getAxisCoordinate(entry, axis) <= coordinate) lower = middle + 1;\n else upper = middle;\n }\n return lower;\n}\n\n/*** Locate the first index at or after a matrix coordinate in a sorted sparse axis. */\nfunction findFirstGreaterOrEqual(\n entries: readonly MatrixGridSparseIndexEntry[],\n coordinate: number,\n axis: 'columnIndex' | 'rowIndex',\n): number {\n let lower = 0;\n let upper = entries.length;\n while (lower < upper) {\n const middle = Math.floor((lower + upper) / 2);\n const entry = entries.at(middle);\n if (entry && getAxisCoordinate(entry, axis) < coordinate) lower = middle + 1;\n else upper = middle;\n }\n return lower;\n}\n\n/*** Read a selected coordinate without dynamically indexing sparse entries. */\nfunction getAxisCoordinate(\n entry: MatrixGridSparseIndexEntry,\n axis: 'columnIndex' | 'rowIndex',\n): number {\n return axis === 'columnIndex' ? entry.columnIndex : entry.rowIndex;\n}\n"]}
1
+ {"version":3,"file":"getMatrixGridNextFocusId.js","sourceRoot":"","sources":["../../../../src/features/matrix-grid/application/getMatrixGridNextFocusId.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n MatrixGridSparseIndex,\n MatrixGridSparseIndexEntry,\n} from './createMatrixGridSparseIndex';\n\n/*** Resolve arrow-key focus among existing sparse cells without inventing placeholder geometry. */\nexport function getMatrixGridNextFocusId(\n index: MatrixGridSparseIndex,\n currentId: string | null,\n key: string,\n): string | null {\n const current = currentId === null ? undefined : index.positionById.get(currentId);\n if (!current) return index.firstId;\n\n return resolveDirectionalCandidate(index, current, key)?.id ?? current.id;\n}\n\n/*** Find the closest existing sparse cell along the requested matrix axis. */\nfunction resolveDirectionalCandidate(\n index: MatrixGridSparseIndex,\n current: MatrixGridSparseIndexEntry,\n key: string,\n): MatrixGridSparseIndexEntry | undefined {\n switch (key) {\n case 'ArrowLeft':\n return findDirectionalNeighbour(\n index.entriesByRow.get(current.rowIndex),\n current,\n 'columnIndex',\n -1,\n );\n case 'ArrowRight':\n return findDirectionalNeighbour(\n index.entriesByRow.get(current.rowIndex),\n current,\n 'columnIndex',\n 1,\n );\n case 'ArrowUp':\n return findDirectionalNeighbour(\n index.entriesByColumn.get(current.columnIndex),\n current,\n 'rowIndex',\n -1,\n );\n case 'ArrowDown':\n return findDirectionalNeighbour(\n index.entriesByColumn.get(current.columnIndex),\n current,\n 'rowIndex',\n 1,\n );\n default:\n return undefined;\n }\n}\n\n/*** Read the nearest strictly directional neighbour from a pre-sorted sparse axis. */\nfunction findDirectionalNeighbour(\n entries: readonly MatrixGridSparseIndexEntry[] | undefined,\n current: MatrixGridSparseIndexEntry,\n axis: 'columnIndex' | 'rowIndex',\n direction: -1 | 1,\n): MatrixGridSparseIndexEntry | undefined {\n if (!entries) return undefined;\n const coordinate = getAxisCoordinate(current, axis);\n const insertionIndex = findFirstAtOrAfter(entries, coordinate, axis, false);\n if (direction === -1) return insertionIndex === 0 ? undefined : entries[insertionIndex - 1];\n return entries[findFirstAtOrAfter(entries, coordinate, axis, true)];\n}\n\n/*** Locates the first entry at or after a matrix coordinate in a sorted sparse axis. */\nfunction findFirstAtOrAfter(\n entries: readonly MatrixGridSparseIndexEntry[],\n coordinate: number,\n axis: 'columnIndex' | 'rowIndex',\n strictlyAfter: boolean,\n): number {\n let lower = 0;\n let upper = entries.length;\n while (lower < upper) {\n const middle = Math.floor((lower + upper) / 2);\n const entry = entries.at(middle);\n const entryCoordinate = entry ? getAxisCoordinate(entry, axis) : undefined;\n if (\n entryCoordinate !== undefined &&\n (strictlyAfter ? entryCoordinate <= coordinate : entryCoordinate < coordinate)\n )\n lower = middle + 1;\n else upper = middle;\n }\n return lower;\n}\n\n/*** Read a selected coordinate without dynamically indexing sparse entries. */\nfunction getAxisCoordinate(\n entry: MatrixGridSparseIndexEntry,\n axis: 'columnIndex' | 'rowIndex',\n): number {\n return axis === 'columnIndex' ? entry.columnIndex : entry.rowIndex;\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import type React from 'react';
2
+ /*** Renders the common field frame and label treatment for picker controls. */
3
+ export declare function PickerField({ children, description, disabled, error, label, required, testID, }: PickerFieldProps): React.JSX.Element;
4
+ interface PickerFieldProps {
5
+ readonly children: React.ReactNode;
6
+ readonly description: React.ReactNode | undefined;
7
+ readonly disabled: boolean | undefined;
8
+ readonly error: React.ReactNode | undefined;
9
+ readonly label: React.ReactNode | undefined;
10
+ readonly required: boolean | undefined;
11
+ readonly testID: string | undefined;
12
+ }
13
+ export {};
14
+ //# sourceMappingURL=PickerField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PickerField.d.ts","sourceRoot":"","sources":["../../../../src/features/picker/composition/PickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,GACP,EAAE,gBAAgB,qBAalB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC"}
@@ -0,0 +1,21 @@
1
+ import { Field } from '@ankhorage/surface';
2
+ import { View } from '../../layout/public';
3
+ import { Text } from '../../typography/public';
4
+ /*** Renders the common field frame and label treatment for picker controls. */
5
+ export function PickerField({ children, description, disabled, error, label, required, testID, }) {
6
+ return (<Field disabled={disabled} errorText={error} invalid={Boolean(error)} label={label ? <PickerFieldLabel description={description} label={label}/> : undefined} required={required} testID={testID}>
7
+ {children}
8
+ </Field>);
9
+ }
10
+ /*** Renders a picker field label and its optional supporting description. */
11
+ function PickerFieldLabel({ description, label, }) {
12
+ return (<View gap="xs">
13
+ <Text variant="label" weight="semiBold">
14
+ {label}
15
+ </Text>
16
+ {description ? (<Text emphasis="muted" variant="bodySmall">
17
+ {description}
18
+ </Text>) : null}
19
+ </View>);
20
+ }
21
+ //# sourceMappingURL=PickerField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PickerField.js","sourceRoot":"","sources":["../../../../src/features/picker/composition/PickerField.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,GACW;IACjB,OAAO,CACL,CAAC,KAAK,CACJ,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,SAAS,CAAC,CAAC,KAAK,CAAC,CACjB,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CACxB,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CACxF,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,MAAM,CAAC,CAAC,MAAM,CAAC,CAEf;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,KAAK,CAAC,CACT,CAAC;AACJ,CAAC;AAYD,6EAA6E;AAC7E,SAAS,gBAAgB,CAAC,EACxB,WAAW,EACX,KAAK,GAIN;IACC,OAAO,CACL,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CACZ;MAAA,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CACrC;QAAA,CAAC,KAAK,CACR;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,WAAW,CAAC,CAAC,CAAC,CACb,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CACxC;UAAA,CAAC,WAAW,CACd;QAAA,EAAE,IAAI,CAAC,CACR,CAAC,CAAC,CAAC,IAAI,CACV;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC","sourcesContent":["import { Field } from '@ankhorage/surface';\nimport type React from 'react';\n\nimport { View } from '../../layout/public';\nimport { Text } from '../../typography/public';\n\n/*** Renders the common field frame and label treatment for picker controls. */\nexport function PickerField({\n children,\n description,\n disabled,\n error,\n label,\n required,\n testID,\n}: PickerFieldProps) {\n return (\n <Field\n disabled={disabled}\n errorText={error}\n invalid={Boolean(error)}\n label={label ? <PickerFieldLabel description={description} label={label} /> : undefined}\n required={required}\n testID={testID}\n >\n {children}\n </Field>\n );\n}\n\ninterface PickerFieldProps {\n readonly children: React.ReactNode;\n readonly description: React.ReactNode | undefined;\n readonly disabled: boolean | undefined;\n readonly error: React.ReactNode | undefined;\n readonly label: React.ReactNode | undefined;\n readonly required: boolean | undefined;\n readonly testID: string | undefined;\n}\n\n/*** Renders a picker field label and its optional supporting description. */\nfunction PickerFieldLabel({\n description,\n label,\n}: {\n readonly description: React.ReactNode | undefined;\n readonly label: React.ReactNode;\n}) {\n return (\n <View gap=\"xs\">\n <Text variant=\"label\" weight=\"semiBold\">\n {label}\n </Text>\n {description ? (\n <Text emphasis=\"muted\" variant=\"bodySmall\">\n {description}\n </Text>\n ) : null}\n </View>\n );\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type React from 'react';
2
+ /*** Renders the title block shared by picker overlay content. */
3
+ export declare function PickerHeader({ description, title }: PickerHeaderProps): React.JSX.Element;
4
+ interface PickerHeaderProps {
5
+ readonly description: React.ReactNode | undefined;
6
+ readonly title: React.ReactNode;
7
+ }
8
+ export {};
9
+ //# sourceMappingURL=PickerHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PickerHeader.d.ts","sourceRoot":"","sources":["../../../../src/features/picker/composition/PickerHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,iBAAiB,qBAarE;AAED,UAAU,iBAAiB;IACzB,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;CACjC"}
@@ -0,0 +1,14 @@
1
+ import { View } from '../../layout/public';
2
+ import { Text } from '../../typography/public';
3
+ /*** Renders the title block shared by picker overlay content. */
4
+ export function PickerHeader({ description, title }) {
5
+ return (<View gap="xxs">
6
+ <Text align="center" variant="label" weight="semiBold">
7
+ {title}
8
+ </Text>
9
+ {description ? (<Text align="center" emphasis="muted" variant="bodySmall">
10
+ {description}
11
+ </Text>) : null}
12
+ </View>);
13
+ }
14
+ //# sourceMappingURL=PickerHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PickerHeader.js","sourceRoot":"","sources":["../../../../src/features/picker/composition/PickerHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,iEAAiE;AACjE,MAAM,UAAU,YAAY,CAAC,EAAE,WAAW,EAAE,KAAK,EAAqB;IACpE,OAAO,CACL,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CACb;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CACpD;QAAA,CAAC,KAAK,CACR;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,WAAW,CAAC,CAAC,CAAC,CACb,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CACvD;UAAA,CAAC,WAAW,CACd;QAAA,EAAE,IAAI,CAAC,CACR,CAAC,CAAC,CAAC,IAAI,CACV;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC","sourcesContent":["import type React from 'react';\n\nimport { View } from '../../layout/public';\nimport { Text } from '../../typography/public';\n\n/*** Renders the title block shared by picker overlay content. */\nexport function PickerHeader({ description, title }: PickerHeaderProps) {\n return (\n <View gap=\"xxs\">\n <Text align=\"center\" variant=\"label\" weight=\"semiBold\">\n {title}\n </Text>\n {description ? (\n <Text align=\"center\" emphasis=\"muted\" variant=\"bodySmall\">\n {description}\n </Text>\n ) : null}\n </View>\n );\n}\n\ninterface PickerHeaderProps {\n readonly description: React.ReactNode | undefined;\n readonly title: React.ReactNode;\n}\n"]}
@@ -191,6 +191,43 @@ export declare const tabletopTableMeta: {
191
191
  };
192
192
  };
193
193
  readonly props: {
194
+ readonly shape: {
195
+ readonly type: "enum";
196
+ readonly category: "Table";
197
+ readonly label: "Shape";
198
+ readonly enum: readonly ["circle", "oval", "rounded"];
199
+ readonly default: "oval";
200
+ readonly authoring: {
201
+ readonly authority: "instance";
202
+ };
203
+ };
204
+ readonly cardSize: {
205
+ readonly type: "enum";
206
+ readonly category: "Cards";
207
+ readonly label: "Card size";
208
+ readonly enum: readonly ["small", "medium", "large"];
209
+ readonly default: "small";
210
+ readonly authoring: {
211
+ readonly authority: "instance";
212
+ };
213
+ };
214
+ readonly disabled: {
215
+ readonly type: "boolean";
216
+ readonly category: "State";
217
+ readonly label: "Disabled";
218
+ readonly default: false;
219
+ readonly authoring: {
220
+ readonly authority: "instance";
221
+ };
222
+ };
223
+ readonly accessibilityLabel: {
224
+ readonly type: "string";
225
+ readonly category: "Accessibility";
226
+ readonly label: "Accessibility label";
227
+ readonly authoring: {
228
+ readonly authority: "instance";
229
+ };
230
+ };
194
231
  readonly seats: {
195
232
  readonly type: "array";
196
233
  readonly category: "Players";
@@ -225,16 +262,6 @@ export declare const tabletopTableMeta: {
225
262
  readonly authority: "instance";
226
263
  };
227
264
  };
228
- readonly shape: {
229
- readonly type: "enum";
230
- readonly category: "Table";
231
- readonly label: "Shape";
232
- readonly enum: readonly ["circle", "oval", "rounded"];
233
- readonly default: "oval";
234
- readonly authoring: {
235
- readonly authority: "instance";
236
- };
237
- };
238
265
  readonly seatCount: {
239
266
  readonly type: "enum";
240
267
  readonly category: "Players";
@@ -244,33 +271,6 @@ export declare const tabletopTableMeta: {
244
271
  readonly authority: "instance";
245
272
  };
246
273
  };
247
- readonly cardSize: {
248
- readonly type: "enum";
249
- readonly category: "Cards";
250
- readonly label: "Card size";
251
- readonly enum: readonly ["small", "medium", "large"];
252
- readonly default: "small";
253
- readonly authoring: {
254
- readonly authority: "instance";
255
- };
256
- };
257
- readonly disabled: {
258
- readonly type: "boolean";
259
- readonly category: "State";
260
- readonly label: "Disabled";
261
- readonly default: false;
262
- readonly authoring: {
263
- readonly authority: "instance";
264
- };
265
- };
266
- readonly accessibilityLabel: {
267
- readonly type: "string";
268
- readonly category: "Accessibility";
269
- readonly label: "Accessibility label";
270
- readonly authoring: {
271
- readonly authority: "instance";
272
- };
273
- };
274
274
  };
275
275
  };
276
276
  export declare const pokerTrainingTableMeta: {
@@ -334,15 +334,6 @@ export declare const pokerTrainingTableMeta: {
334
334
  };
335
335
  };
336
336
  readonly props: {
337
- readonly defaultStackBigBlinds: {
338
- readonly type: "number";
339
- readonly category: "Players";
340
- readonly label: "Default stack in big blinds";
341
- readonly default: 100;
342
- readonly authoring: {
343
- readonly authority: "instance";
344
- };
345
- };
346
337
  readonly shape: {
347
338
  readonly type: "enum";
348
339
  readonly category: "Table";
@@ -380,6 +371,15 @@ export declare const pokerTrainingTableMeta: {
380
371
  readonly authority: "instance";
381
372
  };
382
373
  };
374
+ readonly defaultStackBigBlinds: {
375
+ readonly type: "number";
376
+ readonly category: "Players";
377
+ readonly label: "Default stack in big blinds";
378
+ readonly default: 100;
379
+ readonly authoring: {
380
+ readonly authority: "instance";
381
+ };
382
+ };
383
383
  };
384
384
  };
385
385
  //# sourceMappingURL=meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/features/tabletop/meta.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBa,CAAC;AACvC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCa,CAAC;AACvC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BU,CAAC;AACvC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6GQ,CAAC;AACvC,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0EG,CAAC"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/features/tabletop/meta.ts"],"names":[],"mappings":"AAkCA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBa,CAAC;AACvC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCa,CAAC;AACvC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BU,CAAC;AACvC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFQ,CAAC;AACvC,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CG,CAAC"}
@@ -1,3 +1,34 @@
1
+ const tabletopPresentationProps = {
2
+ shape: {
3
+ type: 'enum',
4
+ category: 'Table',
5
+ label: 'Shape',
6
+ enum: ['circle', 'oval', 'rounded'],
7
+ default: 'oval',
8
+ authoring: { authority: 'instance' },
9
+ },
10
+ cardSize: {
11
+ type: 'enum',
12
+ category: 'Cards',
13
+ label: 'Card size',
14
+ enum: ['small', 'medium', 'large'],
15
+ default: 'small',
16
+ authoring: { authority: 'instance' },
17
+ },
18
+ disabled: {
19
+ type: 'boolean',
20
+ category: 'State',
21
+ label: 'Disabled',
22
+ default: false,
23
+ authoring: { authority: 'instance' },
24
+ },
25
+ accessibilityLabel: {
26
+ type: 'string',
27
+ category: 'Accessibility',
28
+ label: 'Accessibility label',
29
+ authoring: { authority: 'instance' },
30
+ },
31
+ };
1
32
  export const cardBackMeta = {
2
33
  name: 'CardBack',
3
34
  category: 'component',
@@ -160,14 +191,6 @@ export const tabletopTableMeta = {
160
191
  label: 'Center sublabel',
161
192
  authoring: { authority: 'instance' },
162
193
  },
163
- shape: {
164
- type: 'enum',
165
- category: 'Table',
166
- label: 'Shape',
167
- enum: ['circle', 'oval', 'rounded'],
168
- default: 'oval',
169
- authoring: { authority: 'instance' },
170
- },
171
194
  seatCount: {
172
195
  type: 'enum',
173
196
  category: 'Players',
@@ -175,27 +198,7 @@ export const tabletopTableMeta = {
175
198
  enum: [2, 3, 4, 5, 6, 7, 8, 9, 10],
176
199
  authoring: { authority: 'instance' },
177
200
  },
178
- cardSize: {
179
- type: 'enum',
180
- category: 'Cards',
181
- label: 'Card size',
182
- enum: ['small', 'medium', 'large'],
183
- default: 'small',
184
- authoring: { authority: 'instance' },
185
- },
186
- disabled: {
187
- type: 'boolean',
188
- category: 'State',
189
- label: 'Disabled',
190
- default: false,
191
- authoring: { authority: 'instance' },
192
- },
193
- accessibilityLabel: {
194
- type: 'string',
195
- category: 'Accessibility',
196
- label: 'Accessibility label',
197
- authoring: { authority: 'instance' },
198
- },
201
+ ...tabletopPresentationProps,
199
202
  },
200
203
  };
201
204
  export const pokerTrainingTableMeta = {
@@ -242,35 +245,7 @@ export const pokerTrainingTableMeta = {
242
245
  default: 100,
243
246
  authoring: { authority: 'instance' },
244
247
  },
245
- shape: {
246
- type: 'enum',
247
- category: 'Table',
248
- label: 'Shape',
249
- enum: ['circle', 'oval', 'rounded'],
250
- default: 'oval',
251
- authoring: { authority: 'instance' },
252
- },
253
- cardSize: {
254
- type: 'enum',
255
- category: 'Cards',
256
- label: 'Card size',
257
- enum: ['small', 'medium', 'large'],
258
- default: 'small',
259
- authoring: { authority: 'instance' },
260
- },
261
- disabled: {
262
- type: 'boolean',
263
- category: 'State',
264
- label: 'Disabled',
265
- default: false,
266
- authoring: { authority: 'instance' },
267
- },
268
- accessibilityLabel: {
269
- type: 'string',
270
- category: 'Accessibility',
271
- label: 'Accessibility label',
272
- authoring: { authority: 'instance' },
273
- },
248
+ ...tabletopPresentationProps,
274
249
  },
275
250
  };
276
251
  //# sourceMappingURL=meta.js.map