maquinaweb-ui 2.75.0 → 2.75.2

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 (175) hide show
  1. package/dist/actions.js +0 -1
  2. package/dist/actions.js.map +1 -1
  3. package/dist/analytics/core.d.ts.map +1 -1
  4. package/dist/analytics/core.js +0 -1
  5. package/dist/analytics/core.js.map +1 -1
  6. package/dist/analytics/delegated-clicks.d.ts.map +1 -1
  7. package/dist/analytics/delegated-clicks.js +0 -1
  8. package/dist/analytics/delegated-clicks.js.map +1 -1
  9. package/dist/analytics/provider.d.ts +2 -2
  10. package/dist/analytics/provider.d.ts.map +1 -1
  11. package/dist/analytics/provider.js +0 -1
  12. package/dist/analytics/provider.js.map +1 -1
  13. package/dist/analytics/types.d.ts.map +1 -1
  14. package/dist/analytics.js +0 -1
  15. package/dist/container-animation/container-animation.d.ts +2 -2
  16. package/dist/container-animation/container-animation.d.ts.map +1 -1
  17. package/dist/container-animation/container-animation.js +1 -2
  18. package/dist/container-animation/container-animation.js.map +1 -1
  19. package/dist/container-animation.js +0 -1
  20. package/dist/date-field/DateField.d.ts +2 -2
  21. package/dist/date-field/DateField.d.ts.map +1 -1
  22. package/dist/date-field/DateField.js +0 -1
  23. package/dist/date-field/DateField.js.map +1 -1
  24. package/dist/date-field.js +0 -1
  25. package/dist/date-hour-field/DateHourField.d.ts +2 -2
  26. package/dist/date-hour-field/DateHourField.d.ts.map +1 -1
  27. package/dist/date-hour-field/DateHourField.js +0 -1
  28. package/dist/date-hour-field/DateHourField.js.map +1 -1
  29. package/dist/date-hour-field/time-wheel-column.js.map +1 -1
  30. package/dist/date-hour-field.js +0 -1
  31. package/dist/input-suggest/input-suggest.d.ts +2 -2
  32. package/dist/input-suggest/input-suggest.d.ts.map +1 -1
  33. package/dist/input-suggest/input-suggest.js +6 -7
  34. package/dist/input-suggest/input-suggest.js.map +1 -1
  35. package/dist/input-suggest.js +0 -1
  36. package/dist/kanban-dnd/constants.js +1 -4
  37. package/dist/kanban-dnd/constants.js.map +1 -1
  38. package/dist/kanban-dnd/context.d.ts +0 -4
  39. package/dist/kanban-dnd/context.d.ts.map +1 -1
  40. package/dist/kanban-dnd/context.js +0 -1
  41. package/dist/kanban-dnd/context.js.map +1 -1
  42. package/dist/kanban-dnd/drag-preview.js +4 -4
  43. package/dist/kanban-dnd/drag-preview.js.map +1 -1
  44. package/dist/kanban-dnd/drop-animation.js.map +1 -1
  45. package/dist/kanban-dnd/kanban-card-item.d.ts +2 -2
  46. package/dist/kanban-dnd/kanban-card-item.d.ts.map +1 -1
  47. package/dist/kanban-dnd/kanban-card-item.js +0 -1
  48. package/dist/kanban-dnd/kanban-card-item.js.map +1 -1
  49. package/dist/kanban-dnd/kanban-dnd-monitor.d.ts +2 -2
  50. package/dist/kanban-dnd/kanban-dnd-monitor.d.ts.map +1 -1
  51. package/dist/kanban-dnd/kanban-dnd-monitor.js +0 -1
  52. package/dist/kanban-dnd/kanban-dnd-monitor.js.map +1 -1
  53. package/dist/kanban-dnd/kanban-dropzone.d.ts +2 -2
  54. package/dist/kanban-dnd/kanban-dropzone.d.ts.map +1 -1
  55. package/dist/kanban-dnd/kanban-dropzone.js +0 -1
  56. package/dist/kanban-dnd/kanban-dropzone.js.map +1 -1
  57. package/dist/kanban-dnd/kanban-selector.d.ts +2 -2
  58. package/dist/kanban-dnd/kanban-selector.d.ts.map +1 -1
  59. package/dist/kanban-dnd/kanban-selector.js +0 -1
  60. package/dist/kanban-dnd/kanban-selector.js.map +1 -1
  61. package/dist/kanban-dnd/move-cards.d.ts.map +1 -1
  62. package/dist/kanban-dnd/move-cards.js.map +1 -1
  63. package/dist/kanban-dnd/types.d.ts.map +1 -1
  64. package/dist/kanban-dnd/use-kanban-column-dnd.d.ts.map +1 -1
  65. package/dist/kanban-dnd/use-kanban-column-dnd.js +0 -1
  66. package/dist/kanban-dnd/use-kanban-column-dnd.js.map +1 -1
  67. package/dist/kanban-dnd/use-kanban-selector-auto-scroll.js.map +1 -1
  68. package/dist/kanban-dnd.d.ts +0 -1
  69. package/dist/kanban-dnd.js +0 -1
  70. package/dist/landing-text/client-landing-text.js +0 -1
  71. package/dist/landing-text/client-landing-text.js.map +1 -1
  72. package/dist/landing-text/landing-content.d.ts +0 -2
  73. package/dist/landing-text/landing-content.d.ts.map +1 -1
  74. package/dist/landing-text/landing-content.js.map +1 -1
  75. package/dist/landing-text/landing-text.d.ts +2 -2
  76. package/dist/landing-text/landing-text.d.ts.map +1 -1
  77. package/dist/landing-text/landing-text.js +1 -1
  78. package/dist/landing-text/landing-text.js.map +1 -1
  79. package/dist/landing-text/server-landing-text.d.ts +2 -2
  80. package/dist/landing-text/server-landing-text.d.ts.map +1 -1
  81. package/dist/landing-text/server-landing-text.js +1 -1
  82. package/dist/landing-text/server-landing-text.js.map +1 -1
  83. package/dist/landing-text/types.d.ts.map +1 -1
  84. package/dist/node_modules/framer-motion/dist/es/utils/use-in-view.js +0 -1
  85. package/dist/node_modules/framer-motion/dist/es/utils/use-in-view.js.map +1 -1
  86. package/dist/node_modules/framer-motion/dist/types/index.d.ts +4 -0
  87. package/dist/node_modules/framer-motion/dist/types.d-DOCC-kZB.d.ts +1 -0
  88. package/dist/node_modules/motion/dist/react.d.ts +2 -0
  89. package/dist/node_modules/motion-dom/dist/index.d.ts +1001 -0
  90. package/dist/node_modules/motion-dom/dist/index.d.ts.map +1 -0
  91. package/dist/node_modules/motion-utils/dist/index.d.ts +17 -0
  92. package/dist/node_modules/motion-utils/dist/index.d.ts.map +1 -0
  93. package/dist/page-header/page-header.d.ts +2 -2
  94. package/dist/page-header/page-header.d.ts.map +1 -1
  95. package/dist/page-header/page-header.js.map +1 -1
  96. package/dist/page-header.js +0 -1
  97. package/dist/remote-selector/remote-selector.d.ts +3 -3
  98. package/dist/remote-selector/remote-selector.d.ts.map +1 -1
  99. package/dist/remote-selector/remote-selector.js +3 -4
  100. package/dist/remote-selector/remote-selector.js.map +1 -1
  101. package/dist/remote-selector.js +0 -1
  102. package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts +2 -2
  103. package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts.map +1 -1
  104. package/dist/server-infinite-scroll/server-infinite-scroll-items.js.map +1 -1
  105. package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts +2 -2
  106. package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts.map +1 -1
  107. package/dist/server-infinite-scroll/server-infinite-scroll-list.js +6 -7
  108. package/dist/server-infinite-scroll/server-infinite-scroll-list.js.map +1 -1
  109. package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts +2 -2
  110. package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts.map +1 -1
  111. package/dist/server-infinite-scroll/server-infinite-scroll-observer.js +0 -1
  112. package/dist/server-infinite-scroll/server-infinite-scroll-observer.js.map +1 -1
  113. package/dist/server-infinite-scroll/server-infinite-scroll.d.ts +2 -2
  114. package/dist/server-infinite-scroll/server-infinite-scroll.d.ts.map +1 -1
  115. package/dist/server-infinite-scroll/types.d.ts.map +1 -1
  116. package/dist/split-text-poor/split-text-poor.d.ts.map +1 -1
  117. package/dist/split-text-poor/split-text-poor.js +1 -2
  118. package/dist/split-text-poor/split-text-poor.js.map +1 -1
  119. package/dist/split-text-poor.js +0 -1
  120. package/dist/src/hooks/get-mask-options.js.map +1 -1
  121. package/dist/src/hooks/is-server.js +1 -2
  122. package/dist/src/hooks/is-server.js.map +1 -1
  123. package/dist/src/hooks/use-money-input.js +1 -3
  124. package/dist/src/hooks/use-money-input.js.map +1 -1
  125. package/dist/src/hooks/with-mask.d.ts +0 -1
  126. package/dist/src/hooks/with-mask.d.ts.map +1 -1
  127. package/dist/src/hooks/with-mask.js +2 -2
  128. package/dist/src/hooks/with-mask.js.map +1 -1
  129. package/dist/text-field/TextField.d.ts +5 -5
  130. package/dist/text-field/TextField.d.ts.map +1 -1
  131. package/dist/text-field/TextField.js +8 -9
  132. package/dist/text-field/TextField.js.map +1 -1
  133. package/dist/text-field.js +0 -1
  134. package/dist/toggle-field/ToggleField.d.ts.map +1 -1
  135. package/dist/toggle-field/ToggleField.js +1 -2
  136. package/dist/toggle-field/ToggleField.js.map +1 -1
  137. package/dist/toggle-field/ToggleGroup.d.ts +6 -6
  138. package/dist/toggle-field/ToggleGroup.d.ts.map +1 -1
  139. package/dist/toggle-field/ToggleGroup.js +2 -3
  140. package/dist/toggle-field/ToggleGroup.js.map +1 -1
  141. package/dist/toggle-field.js +0 -1
  142. package/dist/ui/badge.js +1 -1
  143. package/dist/ui/badge.js.map +1 -1
  144. package/dist/ui/button.js +1 -1
  145. package/dist/ui/button.js.map +1 -1
  146. package/dist/ui/calendar.js +8 -9
  147. package/dist/ui/calendar.js.map +1 -1
  148. package/dist/ui/checkbox.js +1 -2
  149. package/dist/ui/checkbox.js.map +1 -1
  150. package/dist/ui/command.js +5 -6
  151. package/dist/ui/command.js.map +1 -1
  152. package/dist/ui/content-help.js.map +1 -1
  153. package/dist/ui/form.js +4 -5
  154. package/dist/ui/form.js.map +1 -1
  155. package/dist/ui/input-date-field.js +1 -1
  156. package/dist/ui/input-date-field.js.map +1 -1
  157. package/dist/ui/input-help.js +0 -1
  158. package/dist/ui/input-help.js.map +1 -1
  159. package/dist/ui/input.js +1 -1
  160. package/dist/ui/input.js.map +1 -1
  161. package/dist/ui/label.js +1 -2
  162. package/dist/ui/label.js.map +1 -1
  163. package/dist/ui/popover.js +1 -2
  164. package/dist/ui/popover.js.map +1 -1
  165. package/dist/ui/scroll-area.js +1 -2
  166. package/dist/ui/scroll-area.js.map +1 -1
  167. package/dist/ui/selector.d.ts +0 -2
  168. package/dist/ui/selector.d.ts.map +1 -1
  169. package/dist/ui/selector.js +3 -4
  170. package/dist/ui/selector.js.map +1 -1
  171. package/dist/ui/tooltip.js +2 -3
  172. package/dist/ui/tooltip.js.map +1 -1
  173. package/dist/ui/tree-item-renderer.js +1 -3
  174. package/dist/ui/tree-item-renderer.js.map +1 -1
  175. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"move-cards.js","names":["cardsToMove: TCard[]"],"sources":["../../src/components/kanban-dnd/move-cards.ts"],"sourcesContent":["type AnyObject = Record<string, unknown>;\n\ntype MoveCardsResolvers<TColumn, TCard> = {\n getColumnId: (column: TColumn) => string;\n getCards: (column: TColumn) => TCard[];\n setCards: (column: TColumn, cards: TCard[]) => TColumn;\n getCardId: (card: TCard) => string;\n};\n\nfunction hasObjectValue(value: unknown): value is AnyObject {\n return typeof value === 'object' && value !== null;\n}\n\nfunction defaultGetColumnId<TColumn>(column: TColumn): string {\n if (!hasObjectValue(column)) return '';\n const id = column.id;\n return id === undefined || id === null ? '' : String(id);\n}\n\nfunction defaultGetCards<TColumn, TCard>(column: TColumn): TCard[] {\n if (!hasObjectValue(column)) return [];\n const cards = column.cards;\n return Array.isArray(cards) ? (cards as TCard[]) : [];\n}\n\nfunction defaultSetCards<TColumn, TCard>(\n column: TColumn,\n cards: TCard[]\n): TColumn {\n if (!hasObjectValue(column)) return column;\n return { ...column, cards } as TColumn;\n}\n\nfunction defaultGetCardId<TCard>(card: TCard): string {\n if (!hasObjectValue(card)) return '';\n const id = card.id;\n return id === undefined || id === null ? '' : String(id);\n}\n\nexport function moveCardsInColumns<TColumn, TCard>(\n columns: TColumn[],\n cardIds: string[],\n targetColumnId: string,\n resolvers: Partial<MoveCardsResolvers<TColumn, TCard>> = {}\n): TColumn[] {\n const getColumnId = resolvers.getColumnId ?? defaultGetColumnId<TColumn>;\n const getCards = resolvers.getCards ?? defaultGetCards<TColumn, TCard>;\n const setCards = resolvers.setCards ?? defaultSetCards<TColumn, TCard>;\n const getCardId = resolvers.getCardId ?? defaultGetCardId<TCard>;\n\n const selectedIds = new Set(cardIds);\n if (selectedIds.size === 0) return columns;\n\n const cardsToMove: TCard[] = [];\n let didRemoveCards = false;\n\n const columnsWithoutMovedCards = columns.map((column) => {\n const currentCards = getCards(column);\n const remainingCards = currentCards.filter((card) => {\n if (selectedIds.has(getCardId(card))) {\n cardsToMove.push(card);\n return false;\n }\n\n return true;\n });\n\n if (remainingCards.length === currentCards.length) {\n return column;\n }\n\n didRemoveCards = true;\n return setCards(column, remainingCards);\n });\n\n if (cardsToMove.length === 0) return columns;\n\n let didAddCards = false;\n\n const nextColumns = columnsWithoutMovedCards.map((column) => {\n const currentCards = getCards(column);\n\n if (getColumnId(column) === targetColumnId) {\n const existingIds = new Set(currentCards.map((card) => getCardId(card)));\n const incomingCards = cardsToMove.filter(\n (card) => !existingIds.has(getCardId(card))\n );\n\n if (incomingCards.length === 0) {\n return column;\n }\n\n didAddCards = true;\n return setCards(column, [...currentCards, ...incomingCards]);\n }\n\n return column;\n });\n\n return didRemoveCards || didAddCards ? nextColumns : columns;\n}\n"],"mappings":";AASA,SAAS,eAAe,OAAoC;AAC1D,QAAO,OAAO,UAAU,YAAY,UAAU;;AAGhD,SAAS,mBAA4B,QAAyB;AAC5D,KAAI,CAAC,eAAe,OAAO,CAAE,QAAO;CACpC,MAAM,KAAK,OAAO;AAClB,QAAO,OAAO,UAAa,OAAO,OAAO,KAAK,OAAO,GAAG;;AAG1D,SAAS,gBAAgC,QAA0B;AACjE,KAAI,CAAC,eAAe,OAAO,CAAE,QAAO,EAAE;CACtC,MAAM,QAAQ,OAAO;AACrB,QAAO,MAAM,QAAQ,MAAM,GAAI,QAAoB,EAAE;;AAGvD,SAAS,gBACP,QACA,OACS;AACT,KAAI,CAAC,eAAe,OAAO,CAAE,QAAO;AACpC,QAAO;EAAE,GAAG;EAAQ;EAAO;;AAG7B,SAAS,iBAAwB,MAAqB;AACpD,KAAI,CAAC,eAAe,KAAK,CAAE,QAAO;CAClC,MAAM,KAAK,KAAK;AAChB,QAAO,OAAO,UAAa,OAAO,OAAO,KAAK,OAAO,GAAG;;AAG1D,SAAgB,mBACd,SACA,SACA,gBACA,YAAyD,EAAE,EAChD;CACX,MAAM,cAAc,UAAU,eAAe;CAC7C,MAAM,WAAW,UAAU,YAAY;CACvC,MAAM,WAAW,UAAU,YAAY;CACvC,MAAM,YAAY,UAAU,aAAa;CAEzC,MAAM,cAAc,IAAI,IAAI,QAAQ;AACpC,KAAI,YAAY,SAAS,EAAG,QAAO;CAEnC,MAAMA,cAAuB,EAAE;CAC/B,IAAI,iBAAiB;CAErB,MAAM,2BAA2B,QAAQ,KAAK,WAAW;EACvD,MAAM,eAAe,SAAS,OAAO;EACrC,MAAM,iBAAiB,aAAa,QAAQ,SAAS;AACnD,OAAI,YAAY,IAAI,UAAU,KAAK,CAAC,EAAE;AACpC,gBAAY,KAAK,KAAK;AACtB,WAAO;;AAGT,UAAO;IACP;AAEF,MAAI,eAAe,WAAW,aAAa,OACzC,QAAO;AAGT,mBAAiB;AACjB,SAAO,SAAS,QAAQ,eAAe;GACvC;AAEF,KAAI,YAAY,WAAW,EAAG,QAAO;CAErC,IAAI,cAAc;CAElB,MAAM,cAAc,yBAAyB,KAAK,WAAW;EAC3D,MAAM,eAAe,SAAS,OAAO;AAErC,MAAI,YAAY,OAAO,KAAK,gBAAgB;GAC1C,MAAM,cAAc,IAAI,IAAI,aAAa,KAAK,SAAS,UAAU,KAAK,CAAC,CAAC;GACxE,MAAM,gBAAgB,YAAY,QAC/B,SAAS,CAAC,YAAY,IAAI,UAAU,KAAK,CAAC,CAC5C;AAED,OAAI,cAAc,WAAW,EAC3B,QAAO;AAGT,iBAAc;AACd,UAAO,SAAS,QAAQ,CAAC,GAAG,cAAc,GAAG,cAAc,CAAC;;AAG9D,SAAO;GACP;AAEF,QAAO,kBAAkB,cAAc,cAAc"}
1
+ {"version":3,"file":"move-cards.js","names":[],"sources":["../../src/components/kanban-dnd/move-cards.ts"],"sourcesContent":["type AnyObject = Record<string, unknown>;\n\ntype MoveCardsResolvers<TColumn, TCard> = {\n getColumnId: (column: TColumn) => string;\n getCards: (column: TColumn) => TCard[];\n setCards: (column: TColumn, cards: TCard[]) => TColumn;\n getCardId: (card: TCard) => string;\n};\n\nfunction hasObjectValue(value: unknown): value is AnyObject {\n return typeof value === 'object' && value !== null;\n}\n\nfunction defaultGetColumnId<TColumn>(column: TColumn): string {\n if (!hasObjectValue(column)) return '';\n const id = column.id;\n return id === undefined || id === null ? '' : String(id);\n}\n\nfunction defaultGetCards<TColumn, TCard>(column: TColumn): TCard[] {\n if (!hasObjectValue(column)) return [];\n const cards = column.cards;\n return Array.isArray(cards) ? (cards as TCard[]) : [];\n}\n\nfunction defaultSetCards<TColumn, TCard>(\n column: TColumn,\n cards: TCard[]\n): TColumn {\n if (!hasObjectValue(column)) return column;\n return { ...column, cards } as TColumn;\n}\n\nfunction defaultGetCardId<TCard>(card: TCard): string {\n if (!hasObjectValue(card)) return '';\n const id = card.id;\n return id === undefined || id === null ? '' : String(id);\n}\n\nexport function moveCardsInColumns<TColumn, TCard>(\n columns: TColumn[],\n cardIds: string[],\n targetColumnId: string,\n resolvers: Partial<MoveCardsResolvers<TColumn, TCard>> = {}\n): TColumn[] {\n const getColumnId = resolvers.getColumnId ?? defaultGetColumnId<TColumn>;\n const getCards = resolvers.getCards ?? defaultGetCards<TColumn, TCard>;\n const setCards = resolvers.setCards ?? defaultSetCards<TColumn, TCard>;\n const getCardId = resolvers.getCardId ?? defaultGetCardId<TCard>;\n\n const selectedIds = new Set(cardIds);\n if (selectedIds.size === 0) return columns;\n\n const cardsToMove: TCard[] = [];\n let didRemoveCards = false;\n\n const columnsWithoutMovedCards = columns.map((column) => {\n const currentCards = getCards(column);\n const remainingCards = currentCards.filter((card) => {\n if (selectedIds.has(getCardId(card))) {\n cardsToMove.push(card);\n return false;\n }\n\n return true;\n });\n\n if (remainingCards.length === currentCards.length) {\n return column;\n }\n\n didRemoveCards = true;\n return setCards(column, remainingCards);\n });\n\n if (cardsToMove.length === 0) return columns;\n\n let didAddCards = false;\n\n const nextColumns = columnsWithoutMovedCards.map((column) => {\n const currentCards = getCards(column);\n\n if (getColumnId(column) === targetColumnId) {\n const existingIds = new Set(currentCards.map((card) => getCardId(card)));\n const incomingCards = cardsToMove.filter(\n (card) => !existingIds.has(getCardId(card))\n );\n\n if (incomingCards.length === 0) {\n return column;\n }\n\n didAddCards = true;\n return setCards(column, [...currentCards, ...incomingCards]);\n }\n\n return column;\n });\n\n return didRemoveCards || didAddCards ? nextColumns : columns;\n}\n"],"mappings":";AASA,SAAS,eAAe,OAAoC;AAC1D,QAAO,OAAO,UAAU,YAAY,UAAU;;AAGhD,SAAS,mBAA4B,QAAyB;AAC5D,KAAI,CAAC,eAAe,OAAO,CAAE,QAAO;CACpC,MAAM,KAAK,OAAO;AAClB,QAAO,OAAO,UAAa,OAAO,OAAO,KAAK,OAAO,GAAG;;AAG1D,SAAS,gBAAgC,QAA0B;AACjE,KAAI,CAAC,eAAe,OAAO,CAAE,QAAO,EAAE;CACtC,MAAM,QAAQ,OAAO;AACrB,QAAO,MAAM,QAAQ,MAAM,GAAI,QAAoB,EAAE;;AAGvD,SAAS,gBACP,QACA,OACS;AACT,KAAI,CAAC,eAAe,OAAO,CAAE,QAAO;AACpC,QAAO;EAAE,GAAG;EAAQ;EAAO;;AAG7B,SAAS,iBAAwB,MAAqB;AACpD,KAAI,CAAC,eAAe,KAAK,CAAE,QAAO;CAClC,MAAM,KAAK,KAAK;AAChB,QAAO,OAAO,UAAa,OAAO,OAAO,KAAK,OAAO,GAAG;;AAG1D,SAAgB,mBACd,SACA,SACA,gBACA,YAAyD,EAAE,EAChD;CACX,MAAM,cAAc,UAAU,eAAe;CAC7C,MAAM,WAAW,UAAU,YAAY;CACvC,MAAM,WAAW,UAAU,YAAY;CACvC,MAAM,YAAY,UAAU,aAAa;CAEzC,MAAM,cAAc,IAAI,IAAI,QAAQ;AACpC,KAAI,YAAY,SAAS,EAAG,QAAO;CAEnC,MAAM,cAAuB,EAAE;CAC/B,IAAI,iBAAiB;CAErB,MAAM,2BAA2B,QAAQ,KAAK,WAAW;EACvD,MAAM,eAAe,SAAS,OAAO;EACrC,MAAM,iBAAiB,aAAa,QAAQ,SAAS;AACnD,OAAI,YAAY,IAAI,UAAU,KAAK,CAAC,EAAE;AACpC,gBAAY,KAAK,KAAK;AACtB,WAAO;;AAGT,UAAO;IACP;AAEF,MAAI,eAAe,WAAW,aAAa,OACzC,QAAO;AAGT,mBAAiB;AACjB,SAAO,SAAS,QAAQ,eAAe;GACvC;AAEF,KAAI,YAAY,WAAW,EAAG,QAAO;CAErC,IAAI,cAAc;CAElB,MAAM,cAAc,yBAAyB,KAAK,WAAW;EAC3D,MAAM,eAAe,SAAS,OAAO;AAErC,MAAI,YAAY,OAAO,KAAK,gBAAgB;GAC1C,MAAM,cAAc,IAAI,IAAI,aAAa,KAAK,SAAS,UAAU,KAAK,CAAC,CAAC;GACxE,MAAM,gBAAgB,YAAY,QAC/B,SAAS,CAAC,YAAY,IAAI,UAAU,KAAK,CAAC,CAC5C;AAED,OAAI,cAAc,WAAW,EAC3B,QAAO;AAGT,iBAAc;AACd,UAAO,SAAS,QAAQ,CAAC,GAAG,cAAc,GAAG,cAAc,CAAC;;AAG9D,SAAO;GACP;AAEF,QAAO,kBAAkB,cAAc,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/components/kanban-dnd/types.ts"],"sourcesContent":[],"mappings":";;;KAEY,oBAAA;;EAAA,OAAA,CAAA,EAEA,WAFA,GAAoB,IAAA;AAKhC,CAAA;AAkBY,KAlBA,cAAA,GAkBmB;EAOnB,WAAA,CAAA,EAAA;IAEY,IAAA,EAAA,MAAA;IAAV,GAAA,EAAA,MAAA;IACc,MAAA,EAAA,MAAA;EAAV,CAAA;EAAS,YAAA,CAAA,EAAA;IAGf,KAAA,EAAA,MAAA;IAgBA,GAAA,EAAA,MAAA;IACC,MAAA,EAAA,MAAA;EACyB,CAAA;CAAf;AAOS,KAtCpB,mBAAA,GAsCoB;EACF,QAAA,EAtClB,SAsCkB;EAA8B,EAAA,EAAA,MAAA;EAUrC,SAAA,CAAA,EAAA,MAAA;EAEH,eAAA,CAAA,EAAA,MAAA;CAAS;AAKjB,KAjDA,uBAAA,GAiDmB;;cA/CjB,UAAU;kBACN,UAAU;;KAGhB,mBAAA;;aAEC;;;6BAGgB;;KAWjB;aACC;cACC,SAAS,eAAe;yBACb;wBAEZ,yDAGN;gCACyB;8BACF,8BAA8B;;;;;;;;;;;;;;;;uBAUrC;;oBAEH;;;;KAKR,mBAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/components/kanban-dnd/types.ts"],"mappings":";;;KAEY,oBAAA;EACV,EAAA;EACA,OAAA,GAAU,WAAA;AAAA;AAAA,KAGA,cAAA;EACV,WAAA;IACE,IAAA;IACA,GAAA;IACA,MAAA;EAAA;EAEF,YAAA;IACE,KAAA;IACA,GAAA;IACA,MAAA;EAAA;AAAA;AAAA,KASQ,mBAAA;EACV,QAAA,EAAU,SAAA;EACV,EAAA;EACA,SAAA;EACA,eAAA;AAAA;AAAA,KAGU,uBAAA;EACV,QAAA;EACA,UAAA,EAAY,SAAA,CAAU,WAAA;EACtB,aAAA,GAAgB,SAAA,CAAU,WAAA;AAAA;AAAA,KAGhB,mBAAA;EACV,EAAA;EACA,QAAA,GAAW,SAAA;EACX,SAAA;EACA,kBAAA;EACA,kBAAA,SAA2B,oBAAA;AAAA;AAAA,KAWjB,qBAAA;EACV,QAAA,GAAW,SAAA;EACX,UAAA,EAAY,QAAA,CAAS,cAAA,CAAe,OAAA;EACpC,WAAA,IAAe,MAAA,EAAQ,OAAA;EACvB,SAAA,IACE,OAAA,EAAS,OAAA,IACT,OAAA,YACA,cAAA,aACG,OAAA;EACL,kBAAA,IAAsB,MAAA,EAAQ,OAAA;EAC9B,gBAAA,IAAoB,MAAA,EAAQ,OAAA,EAAS,KAAA,gBAAqB,OAAA;EAC1D,SAAA,IAAa,IAAA;EACb,kBAAA;EACA,kBAAA,IAAsB,OAAA;EACtB,iBAAA,IAAqB,MAAA;EACrB,kBAAA;EACA,aAAA,IAAiB,UAAA;EACjB,WAAA,IAAe,IAAA;IAAQ,OAAA;IAAmB,cAAA;EAAA;EAC1C,eAAA,IAAmB,IAAA;IAAQ,QAAA;IAAkB,KAAA;EAAA;EAC7C,iBAAA;EACA,kBAAA,GAAqB,cAAA;EACrB,mBAAA;EACA,eAAA,GAAkB,SAAA;EAClB,iBAAA,IAAqB,OAAA;EACrB,SAAA;AAAA;AAAA,KAGU,mBAAA;EACV,UAAA;EACA,gBAAA;EACA,YAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-kanban-column-dnd.d.ts","names":[],"sources":["../../src/components/kanban-dnd/use-kanban-column-dnd.ts"],"sourcesContent":[],"mappings":";;;iBAWgB,kBAAA;;;;GAIb"}
1
+ {"version":3,"file":"use-kanban-column-dnd.d.ts","names":[],"sources":["../../src/components/kanban-dnd/use-kanban-column-dnd.ts"],"mappings":";;;iBAWgB,kBAAA,CAAA;EACd,QAAA;EACA,UAAA;EACA;AAAA,GACC,uBAAA"}
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { useEffect } from "react";
5
4
  import { draggable, dropTargetForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
6
5
  import { combine } from "@atlaskit/pragmatic-drag-and-drop/combine";
@@ -1 +1 @@
1
- {"version":3,"file":"use-kanban-column-dnd.js","names":[],"sources":["../../src/components/kanban-dnd/use-kanban-column-dnd.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport {\n draggable,\n dropTargetForElements,\n} from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport type { UseKanbanColumnDnDProps } from './types';\n\nexport function useKanbanColumnDnD({\n columnId,\n elementRef,\n dragHandleRef,\n}: UseKanbanColumnDnDProps) {\n useEffect(() => {\n const element = elementRef.current;\n if (!element) return;\n\n return combine(\n draggable({\n element,\n dragHandle: dragHandleRef?.current ?? undefined,\n getInitialData: () => ({\n type: 'column',\n columnId: String(columnId),\n }),\n }),\n dropTargetForElements({\n element,\n canDrop: ({ source }) =>\n source.data.type === 'column' &&\n String(source.data.columnId) !== String(columnId),\n getData: () => ({\n type: 'column',\n columnId: String(columnId),\n }),\n })\n );\n }, [columnId, dragHandleRef, elementRef]);\n}\n"],"mappings":";;;;;;;;AAWA,SAAgB,mBAAmB,EACjC,UACA,YACA,iBAC0B;AAC1B,iBAAgB;EACd,MAAM,UAAU,WAAW;AAC3B,MAAI,CAAC,QAAS;AAEd,SAAO,QACL,UAAU;GACR;GACA,YAAY,eAAe,WAAW;GACtC,uBAAuB;IACrB,MAAM;IACN,UAAU,OAAO,SAAS;IAC3B;GACF,CAAC,EACF,sBAAsB;GACpB;GACA,UAAU,EAAE,aACV,OAAO,KAAK,SAAS,YACrB,OAAO,OAAO,KAAK,SAAS,KAAK,OAAO,SAAS;GACnD,gBAAgB;IACd,MAAM;IACN,UAAU,OAAO,SAAS;IAC3B;GACF,CAAC,CACH;IACA;EAAC;EAAU;EAAe;EAAW,CAAC"}
1
+ {"version":3,"file":"use-kanban-column-dnd.js","names":[],"sources":["../../src/components/kanban-dnd/use-kanban-column-dnd.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\n\nimport { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';\nimport {\n draggable,\n dropTargetForElements,\n} from '@atlaskit/pragmatic-drag-and-drop/element/adapter';\nimport type { UseKanbanColumnDnDProps } from './types';\n\nexport function useKanbanColumnDnD({\n columnId,\n elementRef,\n dragHandleRef,\n}: UseKanbanColumnDnDProps) {\n useEffect(() => {\n const element = elementRef.current;\n if (!element) return;\n\n return combine(\n draggable({\n element,\n dragHandle: dragHandleRef?.current ?? undefined,\n getInitialData: () => ({\n type: 'column',\n columnId: String(columnId),\n }),\n }),\n dropTargetForElements({\n element,\n canDrop: ({ source }) =>\n source.data.type === 'column' &&\n String(source.data.columnId) !== String(columnId),\n getData: () => ({\n type: 'column',\n columnId: String(columnId),\n }),\n })\n );\n }, [columnId, dragHandleRef, elementRef]);\n}\n"],"mappings":";;;;;;;AAWA,SAAgB,mBAAmB,EACjC,UACA,YACA,iBAC0B;AAC1B,iBAAgB;EACd,MAAM,UAAU,WAAW;AAC3B,MAAI,CAAC,QAAS;AAEd,SAAO,QACL,UAAU;GACR;GACA,YAAY,eAAe,WAAW;GACtC,uBAAuB;IACrB,MAAM;IACN,UAAU,OAAO,SAAS;IAC3B;GACF,CAAC,EACF,sBAAsB;GACpB;GACA,UAAU,EAAE,aACV,OAAO,KAAK,SAAS,YACrB,OAAO,OAAO,KAAK,SAAS,KAAK,OAAO,SAAS;GACnD,gBAAgB;IACd,MAAM;IACN,UAAU,OAAO,SAAS;IAC3B;GACF,CAAC,CACH;IACA;EAAC;EAAU;EAAe;EAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-kanban-selector-auto-scroll.js","names":["state: {\n xContainer: HTMLElement | null;\n yContainer: HTMLElement | null;\n xMax: number;\n yMax: number;\n useWindowY: boolean;\n } | null"],"sources":["../../src/components/kanban-dnd/use-kanban-selector-auto-scroll.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\nimport { useEffect } from 'react';\n\nexport function useKanbanSelectorAutoScroll({\n isSelectingRef,\n dragAreaId,\n autoScrollMargin,\n}: {\n isSelectingRef: MutableRefObject<boolean>;\n dragAreaId: string;\n autoScrollMargin: number;\n}) {\n useEffect(() => {\n const clamp = (delta: number, current: number, max: number) =>\n delta > 0 ? Math.min(delta, max - current) : Math.max(delta, -current);\n\n const edge = (\n point: number,\n start: number,\n end: number,\n margin: number,\n dt: number\n ) => {\n if (point < start + margin)\n return ((point - (start + margin)) / margin) * dt;\n if (point > end - margin) return ((point - (end - margin)) / margin) * dt;\n return 0;\n };\n\n const bounds = (el: HTMLElement | null) => {\n if (!el || el === document.documentElement || el === document.body) {\n return {\n left: 0,\n right: window.innerWidth,\n top: 0,\n bottom: window.innerHeight,\n };\n }\n\n const rect = el.getBoundingClientRect();\n return {\n left: Math.max(0, rect.left),\n right: Math.min(window.innerWidth, rect.right),\n top: Math.max(0, rect.top),\n bottom: Math.min(window.innerHeight, rect.bottom),\n };\n };\n\n const findScrollable = (node: HTMLElement | null, axis: 'x' | 'y') => {\n let current = node;\n while (current) {\n const style = window.getComputedStyle(current);\n const canScroll =\n axis === 'x'\n ? /(auto|scroll)/.test(style.overflowX) &&\n current.scrollWidth > current.clientWidth\n : /(auto|scroll)/.test(style.overflowY) &&\n current.scrollHeight > current.clientHeight;\n if (canScroll) return current;\n current = current.parentElement;\n }\n\n return null;\n };\n\n let raf = 0;\n let lastTime = performance.now();\n const pointer = { x: 0, y: 0 };\n let state: {\n xContainer: HTMLElement | null;\n yContainer: HTMLElement | null;\n xMax: number;\n yMax: number;\n useWindowY: boolean;\n } | null = null;\n\n const onPointerMove = (e: PointerEvent) => {\n pointer.x = e.clientX;\n pointer.y = e.clientY;\n };\n\n const getState = () => {\n const startNode =\n document.getElementById(dragAreaId)?.parentElement ?? null;\n const xContainer = findScrollable(startNode, 'x');\n const yContainer = findScrollable(startNode, 'y');\n const useWindowY = !yContainer;\n\n return {\n xContainer,\n yContainer,\n useWindowY,\n xMax: xContainer ? xContainer.scrollWidth - xContainer.clientWidth : 0,\n yMax: useWindowY\n ? document.documentElement.scrollHeight - window.innerHeight\n : yContainer\n ? yContainer.scrollHeight - yContainer.clientHeight\n : 0,\n };\n };\n\n const tick = (now: number) => {\n const dt = now - lastTime;\n lastTime = now;\n\n if (!isSelectingRef.current) {\n state = null;\n raf = requestAnimationFrame(tick);\n return;\n }\n\n state ??= getState();\n const scrollState = state;\n if (!scrollState) {\n raf = requestAnimationFrame(tick);\n return;\n }\n\n const xBounds = bounds(scrollState.xContainer);\n const yBounds = scrollState.useWindowY\n ? { top: 0, bottom: window.innerHeight }\n : bounds(scrollState.yContainer);\n\n const dx = edge(\n pointer.x,\n xBounds.left,\n xBounds.right,\n autoScrollMargin,\n dt\n );\n const dy = edge(\n pointer.y,\n yBounds.top,\n yBounds.bottom,\n autoScrollMargin,\n dt\n );\n\n let didScroll = false;\n\n if (dx && scrollState.xContainer && scrollState.xMax > 0) {\n const nextDx = clamp(\n dx,\n scrollState.xContainer.scrollLeft,\n scrollState.xMax\n );\n if (nextDx) {\n scrollState.xContainer.scrollBy(nextDx, 0);\n didScroll = true;\n }\n }\n\n if (dy && scrollState.yMax > 0) {\n if (scrollState.useWindowY) {\n const top = window.scrollY || document.documentElement.scrollTop;\n const nextDy = clamp(dy, top, scrollState.yMax);\n if (nextDy) {\n window.scrollBy(0, nextDy);\n didScroll = true;\n }\n } else if (scrollState.yContainer) {\n const nextDy = clamp(\n dy,\n scrollState.yContainer.scrollTop,\n scrollState.yMax\n );\n if (nextDy) {\n scrollState.yContainer.scrollBy(0, nextDy);\n didScroll = true;\n }\n }\n }\n\n if (didScroll) {\n document.body.dispatchEvent(\n new MouseEvent('mousemove', {\n clientX: pointer.x,\n clientY: pointer.y,\n bubbles: true,\n cancelable: true,\n })\n );\n }\n\n raf = requestAnimationFrame(tick);\n };\n\n window.addEventListener('pointermove', onPointerMove, { passive: true });\n raf = requestAnimationFrame(tick);\n\n return () => {\n window.removeEventListener('pointermove', onPointerMove);\n cancelAnimationFrame(raf);\n };\n }, [autoScrollMargin, dragAreaId, isSelectingRef]);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-kanban-selector-auto-scroll.js","names":[],"sources":["../../src/components/kanban-dnd/use-kanban-selector-auto-scroll.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\nimport { useEffect } from 'react';\n\nexport function useKanbanSelectorAutoScroll({\n isSelectingRef,\n dragAreaId,\n autoScrollMargin,\n}: {\n isSelectingRef: MutableRefObject<boolean>;\n dragAreaId: string;\n autoScrollMargin: number;\n}) {\n useEffect(() => {\n const clamp = (delta: number, current: number, max: number) =>\n delta > 0 ? Math.min(delta, max - current) : Math.max(delta, -current);\n\n const edge = (\n point: number,\n start: number,\n end: number,\n margin: number,\n dt: number\n ) => {\n if (point < start + margin)\n return ((point - (start + margin)) / margin) * dt;\n if (point > end - margin) return ((point - (end - margin)) / margin) * dt;\n return 0;\n };\n\n const bounds = (el: HTMLElement | null) => {\n if (!el || el === document.documentElement || el === document.body) {\n return {\n left: 0,\n right: window.innerWidth,\n top: 0,\n bottom: window.innerHeight,\n };\n }\n\n const rect = el.getBoundingClientRect();\n return {\n left: Math.max(0, rect.left),\n right: Math.min(window.innerWidth, rect.right),\n top: Math.max(0, rect.top),\n bottom: Math.min(window.innerHeight, rect.bottom),\n };\n };\n\n const findScrollable = (node: HTMLElement | null, axis: 'x' | 'y') => {\n let current = node;\n while (current) {\n const style = window.getComputedStyle(current);\n const canScroll =\n axis === 'x'\n ? /(auto|scroll)/.test(style.overflowX) &&\n current.scrollWidth > current.clientWidth\n : /(auto|scroll)/.test(style.overflowY) &&\n current.scrollHeight > current.clientHeight;\n if (canScroll) return current;\n current = current.parentElement;\n }\n\n return null;\n };\n\n let raf = 0;\n let lastTime = performance.now();\n const pointer = { x: 0, y: 0 };\n let state: {\n xContainer: HTMLElement | null;\n yContainer: HTMLElement | null;\n xMax: number;\n yMax: number;\n useWindowY: boolean;\n } | null = null;\n\n const onPointerMove = (e: PointerEvent) => {\n pointer.x = e.clientX;\n pointer.y = e.clientY;\n };\n\n const getState = () => {\n const startNode =\n document.getElementById(dragAreaId)?.parentElement ?? null;\n const xContainer = findScrollable(startNode, 'x');\n const yContainer = findScrollable(startNode, 'y');\n const useWindowY = !yContainer;\n\n return {\n xContainer,\n yContainer,\n useWindowY,\n xMax: xContainer ? xContainer.scrollWidth - xContainer.clientWidth : 0,\n yMax: useWindowY\n ? document.documentElement.scrollHeight - window.innerHeight\n : yContainer\n ? yContainer.scrollHeight - yContainer.clientHeight\n : 0,\n };\n };\n\n const tick = (now: number) => {\n const dt = now - lastTime;\n lastTime = now;\n\n if (!isSelectingRef.current) {\n state = null;\n raf = requestAnimationFrame(tick);\n return;\n }\n\n state ??= getState();\n const scrollState = state;\n if (!scrollState) {\n raf = requestAnimationFrame(tick);\n return;\n }\n\n const xBounds = bounds(scrollState.xContainer);\n const yBounds = scrollState.useWindowY\n ? { top: 0, bottom: window.innerHeight }\n : bounds(scrollState.yContainer);\n\n const dx = edge(\n pointer.x,\n xBounds.left,\n xBounds.right,\n autoScrollMargin,\n dt\n );\n const dy = edge(\n pointer.y,\n yBounds.top,\n yBounds.bottom,\n autoScrollMargin,\n dt\n );\n\n let didScroll = false;\n\n if (dx && scrollState.xContainer && scrollState.xMax > 0) {\n const nextDx = clamp(\n dx,\n scrollState.xContainer.scrollLeft,\n scrollState.xMax\n );\n if (nextDx) {\n scrollState.xContainer.scrollBy(nextDx, 0);\n didScroll = true;\n }\n }\n\n if (dy && scrollState.yMax > 0) {\n if (scrollState.useWindowY) {\n const top = window.scrollY || document.documentElement.scrollTop;\n const nextDy = clamp(dy, top, scrollState.yMax);\n if (nextDy) {\n window.scrollBy(0, nextDy);\n didScroll = true;\n }\n } else if (scrollState.yContainer) {\n const nextDy = clamp(\n dy,\n scrollState.yContainer.scrollTop,\n scrollState.yMax\n );\n if (nextDy) {\n scrollState.yContainer.scrollBy(0, nextDy);\n didScroll = true;\n }\n }\n }\n\n if (didScroll) {\n document.body.dispatchEvent(\n new MouseEvent('mousemove', {\n clientX: pointer.x,\n clientY: pointer.y,\n bubbles: true,\n cancelable: true,\n })\n );\n }\n\n raf = requestAnimationFrame(tick);\n };\n\n window.addEventListener('pointermove', onPointerMove, { passive: true });\n raf = requestAnimationFrame(tick);\n\n return () => {\n window.removeEventListener('pointermove', onPointerMove);\n cancelAnimationFrame(raf);\n };\n }, [autoScrollMargin, dragAreaId, isSelectingRef]);\n}\n"],"mappings":"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"}
@@ -6,5 +6,4 @@ import { KanbanDropZone } from "./kanban-dnd/kanban-dropzone.js";
6
6
  import { KanbanSelector } from "./kanban-dnd/kanban-selector.js";
7
7
  import { moveCardsInColumns } from "./kanban-dnd/move-cards.js";
8
8
  import { useKanbanColumnDnD } from "./kanban-dnd/use-kanban-column-dnd.js";
9
- import "./kanban-dnd/kanban-dnd.js";
10
9
  export { KanbanCardItem, KanbanCardItemProps, KanbanDndMonitor, KanbanDndMonitorProps, KanbanDropZone, KanbanDropZoneProps, KanbanOverflow, KanbanSelectableItem, KanbanSelector, KanbanSelectorProps, UseKanbanColumnDnDProps, moveCardsInColumns, useKanbanCardSelected, useKanbanColumnDnD, useKanbanSelection, useKanbanSelectionActions };
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { useKanbanCardSelected, useKanbanSelection, useKanbanSelectionActions } from "./kanban-dnd/context.js";
5
4
  import { KanbanCardItem } from "./kanban-dnd/kanban-card-item.js";
6
5
  import { moveCardsInColumns } from "./kanban-dnd/move-cards.js";
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
-
4
3
  import { cn } from "../src/lib/utils.js";
5
4
  import { Button } from "../ui/button.js";
6
5
  import { refreshTag } from "../actions.js";
@@ -1 +1 @@
1
- {"version":3,"file":"client-landing-text.js","names":[],"sources":["../../src/components/landing-text/client-landing-text.tsx"],"sourcesContent":["'use client';\n\nimport { useRef, useState } from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { Button } from '../ui/button';\n\nimport { Check, Loader2, X } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { flushSync } from 'react-dom';\nimport { refreshTag } from '../actions';\nimport type { LandingTextItem } from './types';\n\ninterface ClientLandingTextProps {\n item: LandingTextItem;\n editable?: boolean;\n children: React.ReactNode;\n}\n\nfunction labelFromKey(value: string) {\n if (!value) {\n return '';\n }\n\n return value\n .split(/[-_\\.]/g)\n .filter(Boolean)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n return baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;\n}\n\nfunction parseCookies(cookieHeader: string): Record<string, string> {\n return cookieHeader\n .split(';')\n .map((part) => part.trim())\n .filter(Boolean)\n .reduce<Record<string, string>>((acc, part) => {\n const separatorIndex = part.indexOf('=');\n if (separatorIndex < 0) {\n return acc;\n }\n\n const name = decodeURIComponent(part.slice(0, separatorIndex));\n const value = decodeURIComponent(part.slice(separatorIndex + 1));\n acc[name] = value;\n return acc;\n }, {});\n}\n\nfunction getTokenCookieValue(): string | undefined {\n if (typeof document === 'undefined' || !document.cookie) {\n return undefined;\n }\n\n const rawToken = parseCookies(document.cookie).token;\n if (!rawToken) {\n return undefined;\n }\n\n const withoutQuotes = rawToken.trim().replace(/^\"|\"$/g, '');\n return withoutQuotes.replace(/^Token\\s+/i, '');\n}\n\nasync function persistLandingContent(item: LandingTextItem, value: string) {\n const baseUrl = String(process.env.NEXT_PUBLIC_BASE_URL || '');\n const organization = String(\n process.env.NEXT_PUBLIC_ORGANIZATION_ID || ''\n ).trim();\n\n if (!baseUrl) {\n return;\n }\n\n const token = getTokenCookieValue();\n\n if (!token || !organization) {\n throw new Error(\n 'Credenciais de edição indisponíveis para salvar conteúdo.'\n );\n }\n\n const endpoint = '/landing-page-contents/upsert/';\n const response = await fetch(`${normalizeBaseUrl(baseUrl)}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Token ${token}`,\n 'X-Organization': organization,\n },\n body: JSON.stringify({\n page_key: item.pageKey,\n page_title: labelFromKey(item.pageKey),\n section_key: item.sectionKey,\n section_title: labelFromKey(item.sectionKey),\n content_key: item.contentKey,\n content_title: labelFromKey(item.contentKey),\n value,\n default_value: item.defaultValue,\n metadata: item.metadata,\n }),\n credentials: 'include',\n });\n\n if (!response.ok) {\n throw new Error('Nao foi possivel salvar o conteudo.');\n }\n\n await refreshTag(`landing-page-content-${item.pageKey}`);\n}\n\nfunction normalizeEditableText(value: string): string {\n return value\n .replace(/\\u00a0/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n}\n\nfunction suppressNextDocumentClick() {\n if (typeof document === 'undefined') {\n return;\n }\n\n document.addEventListener(\n 'click',\n (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n },\n { capture: true, once: true }\n );\n}\n\nfunction ClientLandingText({\n item,\n editable = false,\n children,\n}: ClientLandingTextProps) {\n const [isEditing, setIsEditing] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [currentValue, setCurrentValue] = useState(item.value);\n const [draftValue, setDraftValue] = useState(item.value);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const ref = useRef<HTMLElement | null>(null);\n\n const closeEditing = (value: string) => {\n if (ref.current) {\n ref.current.innerText = value;\n }\n setDraftValue(value);\n setIsEditing(false);\n };\n\n const handleEdit = (event: React.PointerEvent<HTMLElement>) => {\n event.stopPropagation();\n suppressNextDocumentClick();\n if (!editable || isSaving || isEditing) {\n return;\n }\n\n const element = event.currentTarget;\n ref.current = element;\n\n const nextDraft = element.innerText || currentValue;\n flushSync(() => {\n setDraftValue(nextDraft);\n setIsEditing(true);\n });\n };\n\n const handleCancel = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n closeEditing(currentValue);\n };\n\n const handleSave = async (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n try {\n setIsSaving(true);\n await persistLandingContent(item, draftValue);\n setCurrentValue(draftValue);\n closeEditing(draftValue);\n } finally {\n setIsSaving(false);\n }\n };\n\n const handleInput = (event: React.FormEvent<HTMLElement>) => {\n if (!isEditing) {\n return;\n }\n ref.current = event.currentTarget;\n setDraftValue(event.currentTarget.innerText);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLElement>) => {\n if (!isEditing || isSaving) {\n return;\n }\n\n const container = containerRef.current;\n const nextFocused = event.relatedTarget;\n\n if (\n container &&\n nextFocused instanceof Node &&\n container.contains(nextFocused)\n ) {\n return;\n }\n\n const liveValue = event.currentTarget.innerText;\n if (\n normalizeEditableText(liveValue) !== normalizeEditableText(currentValue)\n ) {\n if (liveValue !== draftValue) {\n setDraftValue(liveValue);\n }\n return;\n }\n\n closeEditing(currentValue);\n };\n\n return (\n <div className=\"relative\" ref={containerRef}>\n {editable && isEditing && (\n <div className=\"absolute right-0 z-10 h-fit -top-7 flex\">\n <Button\n className=\"size-6 rounded-none p-0 text-foreground!\"\n disabled={isSaving}\n onClick={handleCancel}\n size=\"icon\"\n type=\"button\"\n variant=\"outline\"\n >\n <X />\n </Button>\n <Button\n className=\"size-6 rounded-none p-0 border dark:border-input\"\n disabled={isSaving}\n onClick={handleSave}\n size=\"icon\"\n type=\"button\"\n >\n {isSaving ? <Loader2 className=\"animate-spin size-3\" /> : <Check />}\n </Button>\n </div>\n )}\n\n <Slot\n className={cn(\n 'relative',\n 'after:pointer-events-none after:z-10 after:w-full after:h-full after:absolute after:left-1/2 after:-translate-x-1/2 after:top-1/2 after:-translate-y-1/2 after:box-content after:p-1',\n editable && 'hover:after:border hover:after:border-input',\n isEditing && 'after:border after:border-input',\n isEditing && 'outline-none cursor-text before:bg-red-500',\n !editable && 'after:hidden'\n )}\n contentEditable={editable && isEditing}\n onBlur={handleBlur}\n onInput={handleInput}\n onPointerDownCapture={handleEdit}\n ref={ref}\n suppressContentEditableWarning\n >\n {children}\n </Slot>\n </div>\n );\n}\n\nexport { ClientLandingText };\n"],"mappings":"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"}
1
+ {"version":3,"file":"client-landing-text.js","names":[],"sources":["../../src/components/landing-text/client-landing-text.tsx"],"sourcesContent":["'use client';\n\nimport { useRef, useState } from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\nimport { Button } from '../ui/button';\n\nimport { Check, Loader2, X } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\nimport { flushSync } from 'react-dom';\nimport { refreshTag } from '../actions';\nimport type { LandingTextItem } from './types';\n\ninterface ClientLandingTextProps {\n item: LandingTextItem;\n editable?: boolean;\n children: React.ReactNode;\n}\n\nfunction labelFromKey(value: string) {\n if (!value) {\n return '';\n }\n\n return value\n .split(/[-_\\.]/g)\n .filter(Boolean)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n return baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;\n}\n\nfunction parseCookies(cookieHeader: string): Record<string, string> {\n return cookieHeader\n .split(';')\n .map((part) => part.trim())\n .filter(Boolean)\n .reduce<Record<string, string>>((acc, part) => {\n const separatorIndex = part.indexOf('=');\n if (separatorIndex < 0) {\n return acc;\n }\n\n const name = decodeURIComponent(part.slice(0, separatorIndex));\n const value = decodeURIComponent(part.slice(separatorIndex + 1));\n acc[name] = value;\n return acc;\n }, {});\n}\n\nfunction getTokenCookieValue(): string | undefined {\n if (typeof document === 'undefined' || !document.cookie) {\n return undefined;\n }\n\n const rawToken = parseCookies(document.cookie).token;\n if (!rawToken) {\n return undefined;\n }\n\n const withoutQuotes = rawToken.trim().replace(/^\"|\"$/g, '');\n return withoutQuotes.replace(/^Token\\s+/i, '');\n}\n\nasync function persistLandingContent(item: LandingTextItem, value: string) {\n const baseUrl = String(process.env.NEXT_PUBLIC_BASE_URL || '');\n const organization = String(\n process.env.NEXT_PUBLIC_ORGANIZATION_ID || ''\n ).trim();\n\n if (!baseUrl) {\n return;\n }\n\n const token = getTokenCookieValue();\n\n if (!token || !organization) {\n throw new Error(\n 'Credenciais de edição indisponíveis para salvar conteúdo.'\n );\n }\n\n const endpoint = '/landing-page-contents/upsert/';\n const response = await fetch(`${normalizeBaseUrl(baseUrl)}${endpoint}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Token ${token}`,\n 'X-Organization': organization,\n },\n body: JSON.stringify({\n page_key: item.pageKey,\n page_title: labelFromKey(item.pageKey),\n section_key: item.sectionKey,\n section_title: labelFromKey(item.sectionKey),\n content_key: item.contentKey,\n content_title: labelFromKey(item.contentKey),\n value,\n default_value: item.defaultValue,\n metadata: item.metadata,\n }),\n credentials: 'include',\n });\n\n if (!response.ok) {\n throw new Error('Nao foi possivel salvar o conteudo.');\n }\n\n await refreshTag(`landing-page-content-${item.pageKey}`);\n}\n\nfunction normalizeEditableText(value: string): string {\n return value\n .replace(/\\u00a0/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim();\n}\n\nfunction suppressNextDocumentClick() {\n if (typeof document === 'undefined') {\n return;\n }\n\n document.addEventListener(\n 'click',\n (event) => {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n },\n { capture: true, once: true }\n );\n}\n\nfunction ClientLandingText({\n item,\n editable = false,\n children,\n}: ClientLandingTextProps) {\n const [isEditing, setIsEditing] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [currentValue, setCurrentValue] = useState(item.value);\n const [draftValue, setDraftValue] = useState(item.value);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const ref = useRef<HTMLElement | null>(null);\n\n const closeEditing = (value: string) => {\n if (ref.current) {\n ref.current.innerText = value;\n }\n setDraftValue(value);\n setIsEditing(false);\n };\n\n const handleEdit = (event: React.PointerEvent<HTMLElement>) => {\n event.stopPropagation();\n suppressNextDocumentClick();\n if (!editable || isSaving || isEditing) {\n return;\n }\n\n const element = event.currentTarget;\n ref.current = element;\n\n const nextDraft = element.innerText || currentValue;\n flushSync(() => {\n setDraftValue(nextDraft);\n setIsEditing(true);\n });\n };\n\n const handleCancel = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n closeEditing(currentValue);\n };\n\n const handleSave = async (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n try {\n setIsSaving(true);\n await persistLandingContent(item, draftValue);\n setCurrentValue(draftValue);\n closeEditing(draftValue);\n } finally {\n setIsSaving(false);\n }\n };\n\n const handleInput = (event: React.FormEvent<HTMLElement>) => {\n if (!isEditing) {\n return;\n }\n ref.current = event.currentTarget;\n setDraftValue(event.currentTarget.innerText);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLElement>) => {\n if (!isEditing || isSaving) {\n return;\n }\n\n const container = containerRef.current;\n const nextFocused = event.relatedTarget;\n\n if (\n container &&\n nextFocused instanceof Node &&\n container.contains(nextFocused)\n ) {\n return;\n }\n\n const liveValue = event.currentTarget.innerText;\n if (\n normalizeEditableText(liveValue) !== normalizeEditableText(currentValue)\n ) {\n if (liveValue !== draftValue) {\n setDraftValue(liveValue);\n }\n return;\n }\n\n closeEditing(currentValue);\n };\n\n return (\n <div className=\"relative\" ref={containerRef}>\n {editable && isEditing && (\n <div className=\"absolute right-0 z-10 h-fit -top-7 flex\">\n <Button\n className=\"size-6 rounded-none p-0 text-foreground!\"\n disabled={isSaving}\n onClick={handleCancel}\n size=\"icon\"\n type=\"button\"\n variant=\"outline\"\n >\n <X />\n </Button>\n <Button\n className=\"size-6 rounded-none p-0 border dark:border-input\"\n disabled={isSaving}\n onClick={handleSave}\n size=\"icon\"\n type=\"button\"\n >\n {isSaving ? <Loader2 className=\"animate-spin size-3\" /> : <Check />}\n </Button>\n </div>\n )}\n\n <Slot\n className={cn(\n 'relative',\n 'after:pointer-events-none after:z-10 after:w-full after:h-full after:absolute after:left-1/2 after:-translate-x-1/2 after:top-1/2 after:-translate-y-1/2 after:box-content after:p-1',\n editable && 'hover:after:border hover:after:border-input',\n isEditing && 'after:border after:border-input',\n isEditing && 'outline-none cursor-text before:bg-red-500',\n !editable && 'after:hidden'\n )}\n contentEditable={editable && isEditing}\n onBlur={handleBlur}\n onInput={handleInput}\n onPointerDownCapture={handleEdit}\n ref={ref}\n suppressContentEditableWarning\n >\n {children}\n </Slot>\n </div>\n );\n}\n\nexport { ClientLandingText };\n"],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  import { LandingContentName, LandingPageContentDefinition, LandingPageKey, ResolvedLandingContentItem, ResolvedLandingPageContent } from "./types.js";
2
- import "server-only";
3
-
4
2
  //#region src/components/landing-text/landing-content.d.ts
5
3
  declare function setLandingPageDefaults(defaults: Record<LandingPageKey, LandingPageContentDefinition>): void;
6
4
  declare function buildContentId(sectionKey: string, contentKey: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"landing-content.d.ts","names":[],"sources":["../../src/components/landing-text/landing-content.ts"],"sourcesContent":[],"mappings":";;;;iBAsBgB,sBAAA,WACJ,OAAO,gBAAgB;iBAQnB,cAAA;AATA,iBAmEM,qBAAA,CAnEgB,OAAA,EAoE3B,cApE2B,CAAA,EAqEnC,OArEmC,CAqE3B,0BArE2B,CAAA;AACnB,iBAoHH,uBAAA,CApHG,IAAA,EAAA,MAAA,CAAA,EAAA;EAAgB,OAAA,EAAA,MAAA;EAAvB,UAAA,EAAA,MAAA;EAAM,UAAA,EAAA,MAAA;AAQlB,CAAA,GAAgB,IAAA;AA0DM,iBAsEN,qBAAA,CAtE2B,OAAA,EAuEhC,0BAvEgC,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAyEvB,0BAzEuB;AAChC,iBAsFW,uBAAA,CAtFX,IAAA,EAsFyC,kBAtFzC,CAAA,EAsF2D,OAtF3D,CAAA;EACA,QAAA,EAAA,OAAA;EAAR,IAAA,EAkGQ,0BAlGR;CAAO,CAAA"}
1
+ {"version":3,"file":"landing-content.d.ts","names":[],"sources":["../../src/components/landing-text/landing-content.ts"],"mappings":";;iBAsBgB,sBAAA,CACd,QAAA,EAAU,MAAA,CAAO,cAAA,EAAgB,4BAAA;AAAA,iBAQnB,cAAA,CAAe,UAAA,UAAoB,UAAA;AAAA,iBA0D7B,qBAAA,CACpB,OAAA,EAAS,cAAA,GACR,OAAA,CAAQ,0BAAA;AAAA,iBAgDK,uBAAA,CAAwB,IAAA;;;;;iBAoBxB,qBAAA,CACd,OAAA,EAAS,0BAAA,EACT,UAAA,UACA,UAAA,WAAkB,0BAAA;AAAA,iBAcE,uBAAA,CAAwB,IAAA,EAAM,kBAAA,GAAkB,OAAA;;QAa3D,0BAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"landing-content.js","names":["pageDefaults: Record<LandingPageKey, LandingPageContentDefinition>"],"sources":["../../src/components/landing-text/landing-content.ts"],"sourcesContent":["import 'server-only';\n\nimport { cache } from 'react';\nimport { cookies } from 'next/headers';\n\nimport type {\n LandingContentName,\n LandingPageContentApiItem,\n LandingPageContentDefinition,\n LandingPageKey,\n ResolvedLandingContentItem,\n ResolvedLandingPageContent,\n} from './types';\n\ntype NextFetchInit = RequestInit & {\n next?: {\n tags?: string[];\n };\n};\n\nlet pageDefaults: Record<LandingPageKey, LandingPageContentDefinition> = {};\n\nexport function setLandingPageDefaults(\n defaults: Record<LandingPageKey, LandingPageContentDefinition>\n) {\n pageDefaults = {\n ...pageDefaults,\n ...defaults,\n };\n}\n\nexport function buildContentId(sectionKey: string, contentKey: string) {\n return `${sectionKey}.${contentKey}`;\n}\n\nfunction toApiUrl(path: string) {\n const baseUrl = String(process.env.NEXT_PUBLIC_BASE_URL || '').replace(\n /\\/$/,\n ''\n );\n return baseUrl ? `${baseUrl}${path}` : '';\n}\n\nasync function getEditableState() {\n try {\n const cookieStore = await cookies();\n return Boolean(\n cookieStore.get('token')?.value && cookieStore.get('organization')?.value\n );\n } catch {\n // Static routes (e.g. Cosmos fixtures) can run with dynamic=\"error\".\n // In this context, reading cookies is not allowed, so we disable editing.\n return false;\n }\n}\n\nasync function getLandingOverrides(\n pageKey: LandingPageKey\n): Promise<LandingPageContentApiItem[]> {\n const organizationId = process.env.NEXT_PUBLIC_ORGANIZATION_ID;\n const url = toApiUrl(\n `/public/landing-page-contents/?page_key=${encodeURIComponent(pageKey)}`\n );\n\n if (!organizationId || !url) {\n return [];\n }\n\n try {\n const response = await fetch(url, {\n headers: {\n 'X-Organization': organizationId,\n },\n next: {\n revalidate: 3600,\n tags: ['landing-page-content', `landing-page-content-${pageKey}`],\n },\n } satisfies NextFetchInit);\n\n if (!response.ok) {\n return [];\n }\n\n return response.json();\n } catch {\n return [];\n }\n}\n\nexport async function getLandingPageContent(\n pageKey: LandingPageKey\n): Promise<ResolvedLandingPageContent> {\n const defaults = pageDefaults[pageKey] ?? {\n pageKey,\n sections: [],\n };\n\n const [editable, overrides] = await Promise.all([\n getEditableState(),\n getLandingOverrides(pageKey),\n ]);\n\n const byId = new Map<string, LandingPageContentApiItem>(\n overrides.map((item) => [\n buildContentId(item.section_key, item.content_key),\n item,\n ])\n );\n\n const contents = Object.fromEntries(\n defaults.sections.flatMap((section) =>\n section.contents.map((item) => {\n const id = buildContentId(section.sectionKey, item.contentKey);\n const override = byId.get(id);\n\n return [\n id,\n {\n pageKey: defaults.pageKey,\n sectionKey: section.sectionKey,\n contentKey: item.contentKey,\n value: override?.value ?? item.value,\n defaultValue: item.value,\n metadata: override?.metadata ?? item.metadata ?? {},\n },\n ] as const;\n })\n )\n );\n\n return {\n pageKey: defaults.pageKey,\n editable,\n contents,\n };\n}\n\nconst getLandingPageContentCached = cache(getLandingPageContent);\n\nexport function parseLandingContentName(name: string) {\n const [rawPageKey, rawSectionKey, ...contentParts] = name\n .split('.')\n .map((part) => part.trim());\n\n const pageKey = rawPageKey || '';\n const sectionKey = rawSectionKey || '';\n const contentKey = contentParts.join('.').trim();\n\n if (!pageDefaults[pageKey] || !sectionKey || !contentKey) {\n return null;\n }\n\n return {\n pageKey,\n sectionKey,\n contentKey,\n };\n}\n\nexport function getLandingContentItem(\n content: ResolvedLandingPageContent,\n sectionKey: string,\n contentKey: string\n) {\n return (\n content.contents[buildContentId(sectionKey, contentKey)] ?? {\n pageKey: content.pageKey,\n sectionKey,\n contentKey,\n value: '',\n defaultValue: '',\n metadata: {},\n }\n );\n}\n\nexport async function getLandingContentByName(name: LandingContentName) {\n const parsed = parseLandingContentName(name);\n\n if (!parsed) {\n return {\n editable: false,\n item: {\n pageKey: 'unknown',\n sectionKey: 'invalid',\n contentKey: name,\n value: '',\n defaultValue: '',\n metadata: {},\n } as ResolvedLandingContentItem,\n };\n }\n\n const content = await getLandingPageContentCached(parsed.pageKey);\n\n return {\n editable: content.editable,\n item: getLandingContentItem(content, parsed.sectionKey, parsed.contentKey),\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"landing-content.js","names":[],"sources":["../../src/components/landing-text/landing-content.ts"],"sourcesContent":["import 'server-only';\n\nimport { cache } from 'react';\nimport { cookies } from 'next/headers';\n\nimport type {\n LandingContentName,\n LandingPageContentApiItem,\n LandingPageContentDefinition,\n LandingPageKey,\n ResolvedLandingContentItem,\n ResolvedLandingPageContent,\n} from './types';\n\ntype NextFetchInit = RequestInit & {\n next?: {\n tags?: string[];\n };\n};\n\nlet pageDefaults: Record<LandingPageKey, LandingPageContentDefinition> = {};\n\nexport function setLandingPageDefaults(\n defaults: Record<LandingPageKey, LandingPageContentDefinition>\n) {\n pageDefaults = {\n ...pageDefaults,\n ...defaults,\n };\n}\n\nexport function buildContentId(sectionKey: string, contentKey: string) {\n return `${sectionKey}.${contentKey}`;\n}\n\nfunction toApiUrl(path: string) {\n const baseUrl = String(process.env.NEXT_PUBLIC_BASE_URL || '').replace(\n /\\/$/,\n ''\n );\n return baseUrl ? `${baseUrl}${path}` : '';\n}\n\nasync function getEditableState() {\n try {\n const cookieStore = await cookies();\n return Boolean(\n cookieStore.get('token')?.value && cookieStore.get('organization')?.value\n );\n } catch {\n // Static routes (e.g. Cosmos fixtures) can run with dynamic=\"error\".\n // In this context, reading cookies is not allowed, so we disable editing.\n return false;\n }\n}\n\nasync function getLandingOverrides(\n pageKey: LandingPageKey\n): Promise<LandingPageContentApiItem[]> {\n const organizationId = process.env.NEXT_PUBLIC_ORGANIZATION_ID;\n const url = toApiUrl(\n `/public/landing-page-contents/?page_key=${encodeURIComponent(pageKey)}`\n );\n\n if (!organizationId || !url) {\n return [];\n }\n\n try {\n const response = await fetch(url, {\n headers: {\n 'X-Organization': organizationId,\n },\n next: {\n revalidate: 3600,\n tags: ['landing-page-content', `landing-page-content-${pageKey}`],\n },\n } satisfies NextFetchInit);\n\n if (!response.ok) {\n return [];\n }\n\n return response.json();\n } catch {\n return [];\n }\n}\n\nexport async function getLandingPageContent(\n pageKey: LandingPageKey\n): Promise<ResolvedLandingPageContent> {\n const defaults = pageDefaults[pageKey] ?? {\n pageKey,\n sections: [],\n };\n\n const [editable, overrides] = await Promise.all([\n getEditableState(),\n getLandingOverrides(pageKey),\n ]);\n\n const byId = new Map<string, LandingPageContentApiItem>(\n overrides.map((item) => [\n buildContentId(item.section_key, item.content_key),\n item,\n ])\n );\n\n const contents = Object.fromEntries(\n defaults.sections.flatMap((section) =>\n section.contents.map((item) => {\n const id = buildContentId(section.sectionKey, item.contentKey);\n const override = byId.get(id);\n\n return [\n id,\n {\n pageKey: defaults.pageKey,\n sectionKey: section.sectionKey,\n contentKey: item.contentKey,\n value: override?.value ?? item.value,\n defaultValue: item.value,\n metadata: override?.metadata ?? item.metadata ?? {},\n },\n ] as const;\n })\n )\n );\n\n return {\n pageKey: defaults.pageKey,\n editable,\n contents,\n };\n}\n\nconst getLandingPageContentCached = cache(getLandingPageContent);\n\nexport function parseLandingContentName(name: string) {\n const [rawPageKey, rawSectionKey, ...contentParts] = name\n .split('.')\n .map((part) => part.trim());\n\n const pageKey = rawPageKey || '';\n const sectionKey = rawSectionKey || '';\n const contentKey = contentParts.join('.').trim();\n\n if (!pageDefaults[pageKey] || !sectionKey || !contentKey) {\n return null;\n }\n\n return {\n pageKey,\n sectionKey,\n contentKey,\n };\n}\n\nexport function getLandingContentItem(\n content: ResolvedLandingPageContent,\n sectionKey: string,\n contentKey: string\n) {\n return (\n content.contents[buildContentId(sectionKey, contentKey)] ?? {\n pageKey: content.pageKey,\n sectionKey,\n contentKey,\n value: '',\n defaultValue: '',\n metadata: {},\n }\n );\n}\n\nexport async function getLandingContentByName(name: LandingContentName) {\n const parsed = parseLandingContentName(name);\n\n if (!parsed) {\n return {\n editable: false,\n item: {\n pageKey: 'unknown',\n sectionKey: 'invalid',\n contentKey: name,\n value: '',\n defaultValue: '',\n metadata: {},\n } as ResolvedLandingContentItem,\n };\n }\n\n const content = await getLandingPageContentCached(parsed.pageKey);\n\n return {\n editable: content.editable,\n item: getLandingContentItem(content, parsed.sectionKey, parsed.contentKey),\n };\n}\n"],"mappings":";;;;;AAoBA,IAAI,eAAqE,EAAE;AAE3E,SAAgB,uBACd,UACA;AACA,gBAAe;EACb,GAAG;EACH,GAAG;EACJ;;AAGH,SAAgB,eAAe,YAAoB,YAAoB;AACrE,QAAO,GAAG,WAAW,GAAG;;AAG1B,SAAS,SAAS,MAAc;CAC9B,MAAM,UAAU,OAAO,QAAQ,IAAI,wBAAwB,GAAG,CAAC,QAC7D,OACA,GACD;AACD,QAAO,UAAU,GAAG,UAAU,SAAS;;AAGzC,eAAe,mBAAmB;AAChC,KAAI;EACF,MAAM,cAAc,MAAM,SAAS;AACnC,SAAO,QACL,YAAY,IAAI,QAAQ,EAAE,SAAS,YAAY,IAAI,eAAe,EAAE,MACrE;SACK;AAGN,SAAO;;;AAIX,eAAe,oBACb,SACsC;CACtC,MAAM,iBAAiB,QAAQ,IAAI;CACnC,MAAM,MAAM,SACV,2CAA2C,mBAAmB,QAAQ,GACvE;AAED,KAAI,CAAC,kBAAkB,CAAC,IACtB,QAAO,EAAE;AAGX,KAAI;EACF,MAAM,WAAW,MAAM,MAAM,KAAK;GAChC,SAAS,EACP,kBAAkB,gBACnB;GACD,MAAM;IACJ,YAAY;IACZ,MAAM,CAAC,wBAAwB,wBAAwB,UAAU;IAClE;GACF,CAAyB;AAE1B,MAAI,CAAC,SAAS,GACZ,QAAO,EAAE;AAGX,SAAO,SAAS,MAAM;SAChB;AACN,SAAO,EAAE;;;AAIb,eAAsB,sBACpB,SACqC;CACrC,MAAM,WAAW,aAAa,YAAY;EACxC;EACA,UAAU,EAAE;EACb;CAED,MAAM,CAAC,UAAU,aAAa,MAAM,QAAQ,IAAI,CAC9C,kBAAkB,EAClB,oBAAoB,QAAQ,CAC7B,CAAC;CAEF,MAAM,OAAO,IAAI,IACf,UAAU,KAAK,SAAS,CACtB,eAAe,KAAK,aAAa,KAAK,YAAY,EAClD,KACD,CAAC,CACH;CAED,MAAM,WAAW,OAAO,YACtB,SAAS,SAAS,SAAS,YACzB,QAAQ,SAAS,KAAK,SAAS;EAC7B,MAAM,KAAK,eAAe,QAAQ,YAAY,KAAK,WAAW;EAC9D,MAAM,WAAW,KAAK,IAAI,GAAG;AAE7B,SAAO,CACL,IACA;GACE,SAAS,SAAS;GAClB,YAAY,QAAQ;GACpB,YAAY,KAAK;GACjB,OAAO,UAAU,SAAS,KAAK;GAC/B,cAAc,KAAK;GACnB,UAAU,UAAU,YAAY,KAAK,YAAY,EAAE;GACpD,CACF;GACD,CACH,CACF;AAED,QAAO;EACL,SAAS,SAAS;EAClB;EACA;EACD;;AAGH,MAAM,8BAA8B,MAAM,sBAAsB;AAEhE,SAAgB,wBAAwB,MAAc;CACpD,MAAM,CAAC,YAAY,eAAe,GAAG,gBAAgB,KAClD,MAAM,IAAI,CACV,KAAK,SAAS,KAAK,MAAM,CAAC;CAE7B,MAAM,UAAU,cAAc;CAC9B,MAAM,aAAa,iBAAiB;CACpC,MAAM,aAAa,aAAa,KAAK,IAAI,CAAC,MAAM;AAEhD,KAAI,CAAC,aAAa,YAAY,CAAC,cAAc,CAAC,WAC5C,QAAO;AAGT,QAAO;EACL;EACA;EACA;EACD;;AAGH,SAAgB,sBACd,SACA,YACA,YACA;AACA,QACE,QAAQ,SAAS,eAAe,YAAY,WAAW,KAAK;EAC1D,SAAS,QAAQ;EACjB;EACA;EACA,OAAO;EACP,cAAc;EACd,UAAU,EAAE;EACb;;AAIL,eAAsB,wBAAwB,MAA0B;CACtE,MAAM,SAAS,wBAAwB,KAAK;AAE5C,KAAI,CAAC,OACH,QAAO;EACL,UAAU;EACV,MAAM;GACJ,SAAS;GACT,YAAY;GACZ,YAAY;GACZ,OAAO;GACP,cAAc;GACd,UAAU,EAAE;GACb;EACF;CAGH,MAAM,UAAU,MAAM,4BAA4B,OAAO,QAAQ;AAEjE,QAAO;EACL,UAAU,QAAQ;EAClB,MAAM,sBAAsB,SAAS,OAAO,YAAY,OAAO,WAAW;EAC3E"}
@@ -1,9 +1,9 @@
1
1
  import { LandingTextProps } from "./types.js";
2
2
  import { ElementType } from "react";
3
- import * as react_jsx_runtime3 from "react/jsx-runtime";
3
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/components/landing-text/landing-text.d.ts
6
- declare function LandingText<TAs extends ElementType = 'span'>(props: LandingTextProps<TAs>): Promise<react_jsx_runtime3.JSX.Element>;
6
+ declare function LandingText<TAs extends ElementType = 'span'>(props: LandingTextProps<TAs>): Promise<_$react_jsx_runtime0.JSX.Element>;
7
7
  //#endregion
8
8
  export { LandingText };
9
9
  //# sourceMappingURL=landing-text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"landing-text.d.ts","names":[],"sources":["../../src/components/landing-text/landing-text.tsx"],"sourcesContent":[],"mappings":";;;;;iBAOe,wBAAwB,6BAC9B,iBAAiB,OAAI,QAAA,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"landing-text.d.ts","names":[],"sources":["../../src/components/landing-text/landing-text.tsx"],"mappings":";;;;;iBAOe,WAAA,aAAwB,WAAA,UAAA,CACrC,KAAA,EAAO,gBAAA,CAAiB,GAAA,IAAI,OAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -5,7 +5,7 @@ import { jsx } from "react/jsx-runtime";
5
5
 
6
6
  //#region src/components/landing-text/landing-text.tsx
7
7
  async function LandingText(props) {
8
- const { name, editable: editableOverride,...elementProps } = props;
8
+ const { name, editable: editableOverride, ...elementProps } = props;
9
9
  const { item, editable } = await getLandingContentByName(name);
10
10
  const serverProps = {
11
11
  ...elementProps,
@@ -1 +1 @@
1
- {"version":3,"file":"landing-text.js","names":[],"sources":["../../src/components/landing-text/landing-text.tsx"],"sourcesContent":["import type { ElementType } from 'react';\n\nimport { ClientLandingText } from './client-landing-text';\nimport { getLandingContentByName } from './landing-content';\nimport { ServerLandingText } from './server-landing-text';\nimport type { LandingTextProps, ServerLandingTextProps } from './types';\n\nasync function LandingText<TAs extends ElementType = 'span'>(\n props: LandingTextProps<TAs>\n) {\n const { name, editable: editableOverride, ...elementProps } = props;\n const { item, editable } = await getLandingContentByName(name);\n const serverProps = {\n ...elementProps,\n registration: {\n pageKey: item.pageKey,\n sectionKey: item.sectionKey,\n contentKey: item.contentKey,\n },\n value: item.value,\n } as unknown as ServerLandingTextProps<TAs>;\n\n return (\n <ClientLandingText editable={props.editable || editable} item={item}>\n <ServerLandingText<TAs> {...serverProps} />\n </ClientLandingText>\n );\n}\n\nexport { LandingText };\n"],"mappings":";;;;;;AAOA,eAAe,YACb,OACA;CACA,MAAM,EAAE,MAAM,UAAU,iBAAkB,GAAG,iBAAiB;CAC9D,MAAM,EAAE,MAAM,aAAa,MAAM,wBAAwB,KAAK;CAC9D,MAAM,cAAc;EAClB,GAAG;EACH,cAAc;GACZ,SAAS,KAAK;GACd,YAAY,KAAK;GACjB,YAAY,KAAK;GAClB;EACD,OAAO,KAAK;EACb;AAED,QACE,oBAAC;EAAkB,UAAU,MAAM,YAAY;EAAgB;YAC7D,oBAAC,qBAAuB,GAAI,cAAe;GACzB"}
1
+ {"version":3,"file":"landing-text.js","names":[],"sources":["../../src/components/landing-text/landing-text.tsx"],"sourcesContent":["import type { ElementType } from 'react';\n\nimport { ClientLandingText } from './client-landing-text';\nimport { getLandingContentByName } from './landing-content';\nimport { ServerLandingText } from './server-landing-text';\nimport type { LandingTextProps, ServerLandingTextProps } from './types';\n\nasync function LandingText<TAs extends ElementType = 'span'>(\n props: LandingTextProps<TAs>\n) {\n const { name, editable: editableOverride, ...elementProps } = props;\n const { item, editable } = await getLandingContentByName(name);\n const serverProps = {\n ...elementProps,\n registration: {\n pageKey: item.pageKey,\n sectionKey: item.sectionKey,\n contentKey: item.contentKey,\n },\n value: item.value,\n } as unknown as ServerLandingTextProps<TAs>;\n\n return (\n <ClientLandingText editable={props.editable || editable} item={item}>\n <ServerLandingText<TAs> {...serverProps} />\n </ClientLandingText>\n );\n}\n\nexport { LandingText };\n"],"mappings":";;;;;;AAOA,eAAe,YACb,OACA;CACA,MAAM,EAAE,MAAM,UAAU,kBAAkB,GAAG,iBAAiB;CAC9D,MAAM,EAAE,MAAM,aAAa,MAAM,wBAAwB,KAAK;CAC9D,MAAM,cAAc;EAClB,GAAG;EACH,cAAc;GACZ,SAAS,KAAK;GACd,YAAY,KAAK;GACjB,YAAY,KAAK;GAClB;EACD,OAAO,KAAK;EACb;AAED,QACE,oBAAC,mBAAD;EAAmB,UAAU,MAAM,YAAY;EAAgB;YAC7D,oBAAC,mBAAD,EAAwB,GAAI,aAAe;EACzB"}
@@ -1,6 +1,6 @@
1
1
  import { ServerLandingTextProps } from "./types.js";
2
2
  import { ElementType } from "react";
3
- import * as react_jsx_runtime0 from "react/jsx-runtime";
3
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/components/landing-text/server-landing-text.d.ts
6
6
  declare function ServerLandingText<TAs extends ElementType = 'span'>({
@@ -9,7 +9,7 @@ declare function ServerLandingText<TAs extends ElementType = 'span'>({
9
9
  className,
10
10
  registration,
11
11
  ...props
12
- }: ServerLandingTextProps<TAs>): react_jsx_runtime0.JSX.Element;
12
+ }: ServerLandingTextProps<TAs>): _$react_jsx_runtime0.JSX.Element;
13
13
  //#endregion
14
14
  export { ServerLandingText };
15
15
  //# sourceMappingURL=server-landing-text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-landing-text.d.ts","names":[],"sources":["../../src/components/landing-text/server-landing-text.tsx"],"sourcesContent":[],"mappings":";;;;;iBAKS,8BAA8B;;;;;;GAMpC,uBAAuB,OAAI,kBAAA,CAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"server-landing-text.d.ts","names":[],"sources":["../../src/components/landing-text/server-landing-text.tsx"],"mappings":";;;;;iBAKS,iBAAA,aAA8B,WAAA,UAAA,CAAA;EACrC,EAAA;EACA,KAAA;EACA,SAAA;EACA,YAAA;EAAA,GACG;AAAA,GACF,sBAAA,CAAuB,GAAA,IAAI,oBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -2,7 +2,7 @@ import { cn } from "../src/lib/utils.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
 
4
4
  //#region src/components/landing-text/server-landing-text.tsx
5
- function ServerLandingText({ as, value, className, registration,...props }) {
5
+ function ServerLandingText({ as, value, className, registration, ...props }) {
6
6
  return /* @__PURE__ */ jsx(as ?? "span", {
7
7
  className: cn(className),
8
8
  "data-content-key": registration?.contentKey,
@@ -1 +1 @@
1
- {"version":3,"file":"server-landing-text.js","names":[],"sources":["../../src/components/landing-text/server-landing-text.tsx"],"sourcesContent":["import type { ElementType } from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { ServerLandingTextProps } from './types';\n\nfunction ServerLandingText<TAs extends ElementType = 'span'>({\n as,\n value,\n className,\n registration,\n ...props\n}: ServerLandingTextProps<TAs>) {\n const Component = as ?? 'span';\n\n return (\n <Component\n className={cn(className)}\n data-content-key={registration?.contentKey}\n data-page-key={registration?.pageKey}\n data-section-key={registration?.sectionKey}\n {...props}\n >\n {value}\n </Component>\n );\n}\n\nexport { ServerLandingText };\n"],"mappings":";;;;AAKA,SAAS,kBAAoD,EAC3D,IACA,OACA,WACA,aACA,GAAG,SAC2B;AAG9B,QACE,oBAHgB,MAAM;EAIpB,WAAW,GAAG,UAAU;EACxB,oBAAkB,cAAc;EAChC,iBAAe,cAAc;EAC7B,oBAAkB,cAAc;EAChC,GAAI;YAEH;GACS"}
1
+ {"version":3,"file":"server-landing-text.js","names":[],"sources":["../../src/components/landing-text/server-landing-text.tsx"],"sourcesContent":["import type { ElementType } from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { ServerLandingTextProps } from './types';\n\nfunction ServerLandingText<TAs extends ElementType = 'span'>({\n as,\n value,\n className,\n registration,\n ...props\n}: ServerLandingTextProps<TAs>) {\n const Component = as ?? 'span';\n\n return (\n <Component\n className={cn(className)}\n data-content-key={registration?.contentKey}\n data-page-key={registration?.pageKey}\n data-section-key={registration?.sectionKey}\n {...props}\n >\n {value}\n </Component>\n );\n}\n\nexport { ServerLandingText };\n"],"mappings":";;;;AAKA,SAAS,kBAAoD,EAC3D,IACA,OACA,WACA,cACA,GAAG,SAC2B;AAG9B,QACE,oBAHgB,MAAM,QAGtB;EACE,WAAW,GAAG,UAAU;EACxB,oBAAkB,cAAc;EAChC,iBAAe,cAAc;EAC7B,oBAAkB,cAAc;EAChC,GAAI;YAEH;EACS"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/components/landing-text/types.ts"],"sourcesContent":[],"mappings":";;;KAEY,cAAA;KACA,kBAAA;AADA,UAGK,4BAAA,CAHS;EACd,UAAA,EAAA,MAAA;EAEK,KAAA,EAAA,MAAA;EAMA,QAAA,CAAA,EAHJ,MAGI,CAAA,MAAA,EAAA,OAAA,CAA+B;AAKhD;AAKiB,UAVA,+BAAA,CAeJ;EAGI,UAAA,EAAA,MAAA;EASA,QAAA,EAzBL,4BAyB+B,EAGhB;AAG3B;AAMiB,UAlCA,4BAAA,CAkCwB;EAMxB,OAAA,EAAA,MAAA;EAIZ,QAAA,EA1CO,+BA0CS,EAAA;;AAAuC,UAvC3C,yBAAA,CAuC2C;EACrD,QAAA,EAAA,MAAA;EAC2B,WAAA,EAAA,MAAA;EAAzB,WAAA,EAAA,MAAA;EAAqC,KAAA,EAAA,MAAA;EAA1C,QAAA,CAAA,EApCS,MAoCT,CAAA,MAAA,EAAA,OAAA,CAAA;;AAEQ,UAnCK,0BAAA,CAmCmB;EAAa,OAAA,EAAA,MAAA;EAE7C,UAAA,EAAA,MAAA;EACA,UAAA,EAAA,MAAA;EACQ,KAAA,EAAA,MAAA;EAHV,YAAA,EAAA,MAAA;EAAgB,QAAA,EA9BN,MA8BM,CAAA,MAAA,EAAA,OAAA,CAAA;AAQlB;AAA+C,UAnC9B,0BAAA,CAmC8B;EAE3C,OAAA,EAAA,MAAA;EACA,QAAA,EAAA,OAAA;EAEiB,QAAA,EArCT,MAqCS,CAAA,MAAA,EArCM,0BAqCN,CAAA;;AAJH,UA9BD,uBAAA,CA8BC;EAQN,OAAA,EAAA,MAAA;EAA6B,UAAA,EAAA,MAAA;EACd,UAAA,EAAA,MAAA;;AAAD,UAjCT,eAAA,SAAwB,uBAiCf,CAAA;;;YA9Bd;;UAGK,oBAAA;;;KAIZ,6BAA6B,0BAA0B;OACrD;IACH,KAAK,yBAAyB,YAAY;KAElC,qCAAqC,wBAC/C,iBACE,KACA;QACQ;;;KAKA,mCAAmC,wBAC7C,iBACE,KACA;;iBAEiB;;KAIT,6BAA6B,wBACvC,yBAAyB"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/components/landing-text/types.ts"],"mappings":";;;KAEY,cAAA;AAAA,KACA,kBAAA;AAAA,UAEK,4BAAA;EACf,UAAA;EACA,KAAA;EACA,QAAA,GAAW,MAAA;AAAA;AAAA,UAGI,+BAAA;EACf,UAAA;EACA,QAAA,EAAU,4BAAA;AAAA;AAAA,UAGK,4BAAA;EACf,OAAA;EACA,QAAA,EAAU,+BAAA;AAAA;AAAA,UAGK,yBAAA;EACf,QAAA;EACA,WAAA;EACA,WAAA;EACA,KAAA;EACA,QAAA,GAAW,MAAA;AAAA;AAAA,UAGI,0BAAA;EACf,OAAA;EACA,UAAA;EACA,UAAA;EACA,KAAA;EACA,YAAA;EACA,QAAA,EAAU,MAAA;AAAA;AAAA,UAGK,0BAAA;EACf,OAAA;EACA,QAAA;EACA,QAAA,EAAU,MAAA,SAAe,0BAAA;AAAA;AAAA,UAGV,uBAAA;EACf,OAAA;EACA,UAAA;EACA,UAAA;AAAA;AAAA,UAGe,eAAA,SAAwB,uBAAA;EACvC,KAAA;EACA,YAAA;EACA,QAAA,EAAU,MAAA;AAAA;AAAA,UAGK,oBAAA;EACf,SAAA;AAAA;AAAA,KAGG,gBAAA,aAA6B,WAAA,eAA0B,SAAA;EAC1D,EAAA,GAAK,GAAA;AAAA,IACH,IAAA,CAAK,wBAAA,CAAyB,GAAA,SAAY,SAAA;AAAA,KAElC,wBAAA,aAAqC,WAAA,aAC/C,gBAAA,CACE,GAAA,EACA,oBAAA;EACE,IAAA,EAAM,kBAAA;EACN,QAAA;AAAA;AAAA,KAIM,sBAAA,aAAmC,WAAA,aAC7C,gBAAA,CACE,GAAA,EACA,oBAAA;EACE,KAAA;EACA,YAAA,GAAe,uBAAA;AAAA;AAAA,KAIT,gBAAA,aAA6B,WAAA,aACvC,wBAAA,CAAyB,GAAA"}
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
 
3
-
4
3
  import { inView } from "../render/dom/viewport/index.js";
5
4
  import { useEffect, useState } from "react";
6
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"use-in-view.js","names":[],"sources":["../../../../../../node_modules/framer-motion/dist/es/utils/use-in-view.mjs"],"sourcesContent":["\"use client\";\nimport { useState, useEffect } from 'react';\nimport { inView } from '../render/dom/viewport/index.mjs';\n\nfunction useInView(ref, { root, margin, amount, once = false, initial = false, } = {}) {\n const [isInView, setInView] = useState(initial);\n useEffect(() => {\n if (!ref.current || (once && isInView))\n return;\n const onEnter = () => {\n setInView(true);\n return once ? undefined : () => setInView(false);\n };\n const options = {\n root: (root && root.current) || undefined,\n margin,\n amount,\n };\n return inView(ref.current, onEnter, options);\n }, [root, ref, margin, once, amount]);\n return isInView;\n}\n\nexport { useInView };\n//# sourceMappingURL=use-in-view.mjs.map\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;AAIA,SAAS,UAAU,KAAK,EAAE,MAAM,QAAQ,QAAQ,OAAO,OAAO,UAAU,UAAW,EAAE,EAAE;CACnF,MAAM,CAAC,UAAU,aAAa,SAAS,QAAQ;AAC/C,iBAAgB;AACZ,MAAI,CAAC,IAAI,WAAY,QAAQ,SACzB;EACJ,MAAM,gBAAgB;AAClB,aAAU,KAAK;AACf,UAAO,OAAO,eAAkB,UAAU,MAAM;;EAEpD,MAAM,UAAU;GACZ,MAAO,QAAQ,KAAK,WAAY;GAChC;GACA;GACH;AACD,SAAO,OAAO,IAAI,SAAS,SAAS,QAAQ;IAC7C;EAAC;EAAM;EAAK;EAAQ;EAAM;EAAO,CAAC;AACrC,QAAO"}
1
+ {"version":3,"file":"use-in-view.js","names":[],"sources":["../../../../../../node_modules/framer-motion/dist/es/utils/use-in-view.mjs"],"sourcesContent":["\"use client\";\nimport { useState, useEffect } from 'react';\nimport { inView } from '../render/dom/viewport/index.mjs';\n\nfunction useInView(ref, { root, margin, amount, once = false, initial = false, } = {}) {\n const [isInView, setInView] = useState(initial);\n useEffect(() => {\n if (!ref.current || (once && isInView))\n return;\n const onEnter = () => {\n setInView(true);\n return once ? undefined : () => setInView(false);\n };\n const options = {\n root: (root && root.current) || undefined,\n margin,\n amount,\n };\n return inView(ref.current, onEnter, options);\n }, [root, ref, margin, once, amount]);\n return isInView;\n}\n\nexport { useInView };\n//# sourceMappingURL=use-in-view.mjs.map\n"],"x_google_ignoreList":[0],"mappings":";;;;;;AAIA,SAAS,UAAU,KAAK,EAAE,MAAM,QAAQ,QAAQ,OAAO,OAAO,UAAU,UAAW,EAAE,EAAE;CACnF,MAAM,CAAC,UAAU,aAAa,SAAS,QAAQ;AAC/C,iBAAgB;AACZ,MAAI,CAAC,IAAI,WAAY,QAAQ,SACzB;EACJ,MAAM,gBAAgB;AAClB,aAAU,KAAK;AACf,UAAO,OAAO,eAAkB,UAAU,MAAM;;EAEpD,MAAM,UAAU;GACZ,MAAO,QAAQ,KAAK,WAAY;GAChC;GACA;GACH;AACD,SAAO,OAAO,IAAI,SAAS,SAAS,QAAQ;IAC7C;EAAC;EAAM;EAAK;EAAQ;EAAM;EAAO,CAAC;AACrC,QAAO"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { BezierDefinition, Easing, EasingDefinition, EasingFunction } from "../../../motion-utils/dist/index.js";
3
+ import { AccelerateConfig, AnimationGeneratorName, AnimationGeneratorType, AnimationOrchestrationOptions, AnimationPlaybackControls, AnimationPlaybackControlsWithThen, AnimationPlaybackLifecycles, AnimationPlaybackOptions, AnyResolvedKeyframe, Batcher, CSSStyleDeclarationWithTransform, DecayOptions, DurationSpringOptions, DynamicOption, FrameData, GeneratorFactory, GeneratorFactoryFunction, HandoffFunction, InertiaOptions, KeyframeGenerator, KeyframeOptions, MotionValue, MotionValueEventCallbacks, MotionValueOptions, Owner, PassiveEffect, Process, ProgressTimeline, RepeatType, SVGAttributes, SVGForcedAttrProperties, SVGForcedAttrTransitions, SVGPathProperties, SVGPathTransitions, SVGTransitions, Schedule, SpringOptions, StartAnimation, StepId, StyleTransitions, Subscriber, TimelineWithFallback, TransformProperties, Transition, TransitionWithValueOverrides, ValueAnimationOptions, ValueAnimationTransition, ValueTransition, VariableTransitions, VelocityOptions, WithAppearProps, optimizedAppearDataAttribute } from "../../../motion-dom/dist/index.js";
4
+ import { RefObject, useEffect } from "react";
@@ -0,0 +1,2 @@
1
+ import { BezierDefinition, Easing, EasingDefinition, EasingFunction } from "../../motion-utils/dist/index.js";
2
+ import { AccelerateConfig, AnimationGeneratorName, AnimationGeneratorType, AnimationOrchestrationOptions, AnimationPlaybackControls, AnimationPlaybackControlsWithThen, AnimationPlaybackLifecycles, AnimationPlaybackOptions, AnyResolvedKeyframe, Batcher, CSSStyleDeclarationWithTransform, DecayOptions, DurationSpringOptions, DynamicOption, FrameData, GeneratorFactory, GeneratorFactoryFunction, HandoffFunction, InertiaOptions, KeyframeGenerator, KeyframeOptions, MotionValue, MotionValueEventCallbacks, MotionValueOptions, Owner, PassiveEffect, Process, ProgressTimeline, RepeatType, SVGAttributes, SVGForcedAttrProperties, SVGForcedAttrTransitions, SVGPathProperties, SVGPathTransitions, SVGTransitions, Schedule, SpringOptions, StartAnimation, StepId, StyleTransitions, Subscriber, TimelineWithFallback, TransformProperties, Transition, TransitionWithValueOverrides, ValueAnimationOptions, ValueAnimationTransition, ValueTransition, VariableTransitions, VelocityOptions, WithAppearProps, optimizedAppearDataAttribute } from "../../motion-dom/dist/index.js";