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.
- package/dist/actions.js +0 -1
- package/dist/actions.js.map +1 -1
- package/dist/analytics/core.d.ts.map +1 -1
- package/dist/analytics/core.js +0 -1
- package/dist/analytics/core.js.map +1 -1
- package/dist/analytics/delegated-clicks.d.ts.map +1 -1
- package/dist/analytics/delegated-clicks.js +0 -1
- package/dist/analytics/delegated-clicks.js.map +1 -1
- package/dist/analytics/provider.d.ts +2 -2
- package/dist/analytics/provider.d.ts.map +1 -1
- package/dist/analytics/provider.js +0 -1
- package/dist/analytics/provider.js.map +1 -1
- package/dist/analytics/types.d.ts.map +1 -1
- package/dist/analytics.js +0 -1
- package/dist/container-animation/container-animation.d.ts +2 -2
- package/dist/container-animation/container-animation.d.ts.map +1 -1
- package/dist/container-animation/container-animation.js +1 -2
- package/dist/container-animation/container-animation.js.map +1 -1
- package/dist/container-animation.js +0 -1
- package/dist/date-field/DateField.d.ts +2 -2
- package/dist/date-field/DateField.d.ts.map +1 -1
- package/dist/date-field/DateField.js +0 -1
- package/dist/date-field/DateField.js.map +1 -1
- package/dist/date-field.js +0 -1
- package/dist/date-hour-field/DateHourField.d.ts +2 -2
- package/dist/date-hour-field/DateHourField.d.ts.map +1 -1
- package/dist/date-hour-field/DateHourField.js +0 -1
- package/dist/date-hour-field/DateHourField.js.map +1 -1
- package/dist/date-hour-field/time-wheel-column.js.map +1 -1
- package/dist/date-hour-field.js +0 -1
- package/dist/input-suggest/input-suggest.d.ts +2 -2
- package/dist/input-suggest/input-suggest.d.ts.map +1 -1
- package/dist/input-suggest/input-suggest.js +6 -7
- package/dist/input-suggest/input-suggest.js.map +1 -1
- package/dist/input-suggest.js +0 -1
- package/dist/kanban-dnd/constants.js +1 -4
- package/dist/kanban-dnd/constants.js.map +1 -1
- package/dist/kanban-dnd/context.d.ts +0 -4
- package/dist/kanban-dnd/context.d.ts.map +1 -1
- package/dist/kanban-dnd/context.js +0 -1
- package/dist/kanban-dnd/context.js.map +1 -1
- package/dist/kanban-dnd/drag-preview.js +4 -4
- package/dist/kanban-dnd/drag-preview.js.map +1 -1
- package/dist/kanban-dnd/drop-animation.js.map +1 -1
- package/dist/kanban-dnd/kanban-card-item.d.ts +2 -2
- package/dist/kanban-dnd/kanban-card-item.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-card-item.js +0 -1
- package/dist/kanban-dnd/kanban-card-item.js.map +1 -1
- package/dist/kanban-dnd/kanban-dnd-monitor.d.ts +2 -2
- package/dist/kanban-dnd/kanban-dnd-monitor.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-dnd-monitor.js +0 -1
- package/dist/kanban-dnd/kanban-dnd-monitor.js.map +1 -1
- package/dist/kanban-dnd/kanban-dropzone.d.ts +2 -2
- package/dist/kanban-dnd/kanban-dropzone.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-dropzone.js +0 -1
- package/dist/kanban-dnd/kanban-dropzone.js.map +1 -1
- package/dist/kanban-dnd/kanban-selector.d.ts +2 -2
- package/dist/kanban-dnd/kanban-selector.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-selector.js +0 -1
- package/dist/kanban-dnd/kanban-selector.js.map +1 -1
- package/dist/kanban-dnd/move-cards.d.ts.map +1 -1
- package/dist/kanban-dnd/move-cards.js.map +1 -1
- package/dist/kanban-dnd/types.d.ts.map +1 -1
- package/dist/kanban-dnd/use-kanban-column-dnd.d.ts.map +1 -1
- package/dist/kanban-dnd/use-kanban-column-dnd.js +0 -1
- package/dist/kanban-dnd/use-kanban-column-dnd.js.map +1 -1
- package/dist/kanban-dnd/use-kanban-selector-auto-scroll.js.map +1 -1
- package/dist/kanban-dnd.d.ts +0 -1
- package/dist/kanban-dnd.js +0 -1
- package/dist/landing-text/client-landing-text.js +0 -1
- package/dist/landing-text/client-landing-text.js.map +1 -1
- package/dist/landing-text/landing-content.d.ts +0 -2
- package/dist/landing-text/landing-content.d.ts.map +1 -1
- package/dist/landing-text/landing-content.js.map +1 -1
- package/dist/landing-text/landing-text.d.ts +2 -2
- package/dist/landing-text/landing-text.d.ts.map +1 -1
- package/dist/landing-text/landing-text.js +1 -1
- package/dist/landing-text/landing-text.js.map +1 -1
- package/dist/landing-text/server-landing-text.d.ts +2 -2
- package/dist/landing-text/server-landing-text.d.ts.map +1 -1
- package/dist/landing-text/server-landing-text.js +1 -1
- package/dist/landing-text/server-landing-text.js.map +1 -1
- package/dist/landing-text/types.d.ts.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-in-view.js +0 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-in-view.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/types/index.d.ts +4 -0
- package/dist/node_modules/framer-motion/dist/types.d-DOCC-kZB.d.ts +1 -0
- package/dist/node_modules/motion/dist/react.d.ts +2 -0
- package/dist/node_modules/motion-dom/dist/index.d.ts +1001 -0
- package/dist/node_modules/motion-dom/dist/index.d.ts.map +1 -0
- package/dist/node_modules/motion-utils/dist/index.d.ts +17 -0
- package/dist/node_modules/motion-utils/dist/index.d.ts.map +1 -0
- package/dist/page-header/page-header.d.ts +2 -2
- package/dist/page-header/page-header.d.ts.map +1 -1
- package/dist/page-header/page-header.js.map +1 -1
- package/dist/page-header.js +0 -1
- package/dist/remote-selector/remote-selector.d.ts +3 -3
- package/dist/remote-selector/remote-selector.d.ts.map +1 -1
- package/dist/remote-selector/remote-selector.js +3 -4
- package/dist/remote-selector/remote-selector.js.map +1 -1
- package/dist/remote-selector.js +0 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-items.js.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-list.js +6 -7
- package/dist/server-infinite-scroll/server-infinite-scroll-list.js.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.js +0 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.js.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll.d.ts +2 -2
- package/dist/server-infinite-scroll/server-infinite-scroll.d.ts.map +1 -1
- package/dist/server-infinite-scroll/types.d.ts.map +1 -1
- package/dist/split-text-poor/split-text-poor.d.ts.map +1 -1
- package/dist/split-text-poor/split-text-poor.js +1 -2
- package/dist/split-text-poor/split-text-poor.js.map +1 -1
- package/dist/split-text-poor.js +0 -1
- package/dist/src/hooks/get-mask-options.js.map +1 -1
- package/dist/src/hooks/is-server.js +1 -2
- package/dist/src/hooks/is-server.js.map +1 -1
- package/dist/src/hooks/use-money-input.js +1 -3
- package/dist/src/hooks/use-money-input.js.map +1 -1
- package/dist/src/hooks/with-mask.d.ts +0 -1
- package/dist/src/hooks/with-mask.d.ts.map +1 -1
- package/dist/src/hooks/with-mask.js +2 -2
- package/dist/src/hooks/with-mask.js.map +1 -1
- package/dist/text-field/TextField.d.ts +5 -5
- package/dist/text-field/TextField.d.ts.map +1 -1
- package/dist/text-field/TextField.js +8 -9
- package/dist/text-field/TextField.js.map +1 -1
- package/dist/text-field.js +0 -1
- package/dist/toggle-field/ToggleField.d.ts.map +1 -1
- package/dist/toggle-field/ToggleField.js +1 -2
- package/dist/toggle-field/ToggleField.js.map +1 -1
- package/dist/toggle-field/ToggleGroup.d.ts +6 -6
- package/dist/toggle-field/ToggleGroup.d.ts.map +1 -1
- package/dist/toggle-field/ToggleGroup.js +2 -3
- package/dist/toggle-field/ToggleGroup.js.map +1 -1
- package/dist/toggle-field.js +0 -1
- package/dist/ui/badge.js +1 -1
- package/dist/ui/badge.js.map +1 -1
- package/dist/ui/button.js +1 -1
- package/dist/ui/button.js.map +1 -1
- package/dist/ui/calendar.js +8 -9
- package/dist/ui/calendar.js.map +1 -1
- package/dist/ui/checkbox.js +1 -2
- package/dist/ui/checkbox.js.map +1 -1
- package/dist/ui/command.js +5 -6
- package/dist/ui/command.js.map +1 -1
- package/dist/ui/content-help.js.map +1 -1
- package/dist/ui/form.js +4 -5
- package/dist/ui/form.js.map +1 -1
- package/dist/ui/input-date-field.js +1 -1
- package/dist/ui/input-date-field.js.map +1 -1
- package/dist/ui/input-help.js +0 -1
- package/dist/ui/input-help.js.map +1 -1
- package/dist/ui/input.js +1 -1
- package/dist/ui/input.js.map +1 -1
- package/dist/ui/label.js +1 -2
- package/dist/ui/label.js.map +1 -1
- package/dist/ui/popover.js +1 -2
- package/dist/ui/popover.js.map +1 -1
- package/dist/ui/scroll-area.js +1 -2
- package/dist/ui/scroll-area.js.map +1 -1
- package/dist/ui/selector.d.ts +0 -2
- package/dist/ui/selector.d.ts.map +1 -1
- package/dist/ui/selector.js +3 -4
- package/dist/ui/selector.js.map +1 -1
- package/dist/ui/tooltip.js +2 -3
- package/dist/ui/tooltip.js.map +1 -1
- package/dist/ui/tree-item-renderer.js +1 -3
- package/dist/ui/tree-item-renderer.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-cards.js","names":[
|
|
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"],"
|
|
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"],"
|
|
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 +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":"
|
|
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":[
|
|
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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"}
|
package/dist/kanban-dnd.d.ts
CHANGED
|
@@ -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 };
|
package/dist/kanban-dnd.js
CHANGED
|
@@ -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"],"
|
|
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":[
|
|
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":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { LandingTextProps } from "./types.js";
|
|
2
2
|
import { ElementType } from "react";
|
|
3
|
-
import * as
|
|
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<
|
|
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"],"
|
|
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
|
|
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,
|
|
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"],"
|
|
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
|
|
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,
|
|
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"],"
|
|
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 +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":"
|
|
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 @@
|
|
|
1
|
+
export { };
|
|
@@ -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";
|