@mohasinac/appkit 4.52.5 → 4.53.1
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/.build-stamp.json +4 -4
- package/dist/_internal/client/features/sticker-trace/canvas-codec.d.ts +2 -0
- package/dist/_internal/client/features/sticker-trace/canvas-codec.js +148 -0
- package/dist/_internal/client/scaffolds/AppShell.js +1 -1
- package/dist/_internal/server/features/auctions/actions.js +1 -1
- package/dist/_internal/server/features/auctions/og.d.ts +3 -1
- package/dist/_internal/server/features/auctions/og.js +3 -1
- package/dist/_internal/server/features/bundles/actions.js +1 -1
- package/dist/_internal/server/features/business-documents/download.d.ts +41 -0
- package/dist/_internal/server/features/business-documents/download.js +91 -0
- package/dist/_internal/server/features/categories/adapters.d.ts +1 -1
- package/dist/_internal/server/features/categories/adapters.js +10 -0
- package/dist/_internal/server/features/categories/data.js +23 -7
- package/dist/_internal/server/features/checkout/actions.d.ts +14 -0
- package/dist/_internal/server/features/checkout/actions.js +116 -15
- package/dist/_internal/server/features/checkout/bundle-expansion.js +17 -0
- package/dist/_internal/server/features/checkout/data.d.ts +37 -0
- package/dist/_internal/server/features/checkout/data.js +20 -3
- package/dist/_internal/server/features/checkout/group-rule-revalidation.d.ts +34 -0
- package/dist/_internal/server/features/checkout/group-rule-revalidation.js +124 -0
- package/dist/_internal/server/features/checkout/supplier-identity.d.ts +55 -0
- package/dist/_internal/server/features/checkout/supplier-identity.js +81 -0
- package/dist/_internal/server/features/classified/metadata.js +1 -1
- package/dist/_internal/server/features/classified/og.d.ts +3 -1
- package/dist/_internal/server/features/classified/og.js +3 -1
- package/dist/_internal/server/features/digital-code/metadata.js +1 -1
- package/dist/_internal/server/features/digital-code/og.d.ts +3 -1
- package/dist/_internal/server/features/digital-code/og.js +3 -1
- package/dist/_internal/server/features/digital-code/pool.d.ts +19 -4
- package/dist/_internal/server/features/digital-code/pool.js +19 -4
- package/dist/_internal/server/features/live/metadata.js +1 -1
- package/dist/_internal/server/features/live/og.d.ts +3 -1
- package/dist/_internal/server/features/live/og.js +3 -1
- package/dist/_internal/server/features/lottery/actions.js +9 -1
- package/dist/_internal/server/features/lottery/og.d.ts +40 -0
- package/dist/_internal/server/features/lottery/og.js +79 -0
- package/dist/_internal/server/features/messages/actions.js +5 -1
- package/dist/_internal/server/features/offers/adapters.js +17 -3
- package/dist/_internal/server/features/orders/actions.js +7 -2
- package/dist/_internal/server/features/parts/og.js +1 -1
- package/dist/_internal/server/features/pre-orders/og.d.ts +3 -1
- package/dist/_internal/server/features/pre-orders/og.js +3 -1
- package/dist/_internal/server/features/price-index/search.d.ts +18 -0
- package/dist/_internal/server/features/price-index/search.js +47 -7
- package/dist/_internal/server/features/prize-draws/og.d.ts +3 -1
- package/dist/_internal/server/features/prize-draws/og.js +3 -1
- package/dist/_internal/server/features/products/group-members.d.ts +26 -0
- package/dist/_internal/server/features/products/group-members.js +7 -1
- package/dist/_internal/server/features/products/og.d.ts +3 -1
- package/dist/_internal/server/features/products/og.js +3 -1
- package/dist/_internal/server/features/raffle/actions.d.ts +19 -0
- package/dist/_internal/server/features/raffle/actions.js +25 -0
- package/dist/_internal/server/features/reviews/actions.js +1 -1
- package/dist/_internal/server/features/reviews/data.d.ts +1 -1
- package/dist/_internal/server/features/search/index-build/artifact-store.d.ts +89 -0
- package/dist/_internal/server/features/search/index-build/artifact-store.js +208 -0
- package/dist/_internal/server/features/search/index-build/build.d.ts +57 -0
- package/dist/_internal/server/features/search/index-build/build.js +285 -0
- package/dist/_internal/server/features/search/index-build/sources.d.ts +53 -0
- package/dist/_internal/server/features/search/index-build/sources.js +385 -0
- package/dist/_internal/server/features/search/scoped-sources.d.ts +26 -0
- package/dist/_internal/server/features/search/scoped-sources.js +252 -0
- package/dist/_internal/server/features/search/search-everything.d.ts +57 -0
- package/dist/_internal/server/features/search/search-everything.js +70 -20
- package/dist/_internal/server/features/search/search-sources.d.ts +0 -15
- package/dist/_internal/server/features/search/search-sources.js +142 -7
- package/dist/_internal/server/features/seo/robots.js +21 -1
- package/dist/_internal/server/features/seo/sitemap.js +7 -1
- package/dist/_internal/server/features/shared/listing-adapters.js +4 -2
- package/dist/_internal/server/features/shared/listing-data-factory.js +16 -4
- package/dist/_internal/server/features/site-settings/adapters.d.ts +1 -1
- package/dist/_internal/server/features/site-settings/adapters.js +26 -0
- package/dist/_internal/server/features/sticker-trace/actions.d.ts +109 -0
- package/dist/_internal/server/features/sticker-trace/actions.js +172 -0
- package/dist/_internal/server/features/sticker-trace/adapters.d.ts +91 -0
- package/dist/_internal/server/features/sticker-trace/adapters.js +175 -0
- package/dist/_internal/server/features/sticker-trace/build-cut-file.d.ts +26 -0
- package/dist/_internal/server/features/sticker-trace/build-cut-file.js +127 -0
- package/dist/_internal/server/features/sticker-trace/coordinator.d.ts +27 -0
- package/dist/_internal/server/features/sticker-trace/coordinator.js +169 -0
- package/dist/_internal/server/features/sticker-trace/fanout.d.ts +43 -0
- package/dist/_internal/server/features/sticker-trace/fanout.js +180 -0
- package/dist/_internal/server/features/sticker-trace/finalizer.d.ts +25 -0
- package/dist/_internal/server/features/sticker-trace/finalizer.js +123 -0
- package/dist/_internal/server/features/sticker-trace/mosaic-inputs.d.ts +30 -0
- package/dist/_internal/server/features/sticker-trace/mosaic-inputs.js +112 -0
- package/dist/_internal/server/features/sticker-trace/progress.d.ts +81 -0
- package/dist/_internal/server/features/sticker-trace/progress.js +198 -0
- package/dist/_internal/server/features/sticker-trace/promote-to-listings.d.ts +26 -0
- package/dist/_internal/server/features/sticker-trace/promote-to-listings.js +264 -0
- package/dist/_internal/server/features/sticker-trace/promote.d.ts +23 -0
- package/dist/_internal/server/features/sticker-trace/promote.js +193 -0
- package/dist/_internal/server/features/sticker-trace/shard.d.ts +50 -0
- package/dist/_internal/server/features/sticker-trace/shard.js +174 -0
- package/dist/_internal/server/features/sticker-trace/sheet-actions.d.ts +143 -0
- package/dist/_internal/server/features/sticker-trace/sheet-actions.js +311 -0
- package/dist/_internal/server/features/sticker-trace/storage.d.ts +154 -0
- package/dist/_internal/server/features/sticker-trace/storage.js +301 -0
- package/dist/_internal/server/features/stores/adapters.d.ts +1 -1
- package/dist/_internal/server/features/stores/adapters.js +16 -0
- package/dist/_internal/server/features/stores/index.d.ts +1 -0
- package/dist/_internal/server/features/stores/index.js +1 -0
- package/dist/_internal/server/features/stores/tabs.d.ts +25 -0
- package/dist/_internal/server/features/stores/tabs.js +122 -0
- package/dist/_internal/server/functions/scheduled.d.ts +2 -1
- package/dist/_internal/server/functions/scheduled.js +25 -1
- package/dist/_internal/server/jobs/core/_event-ref.d.ts +51 -0
- package/dist/_internal/server/jobs/core/_event-ref.js +63 -0
- package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +18 -0
- package/dist/_internal/server/jobs/core/assignSpinPrize.js +77 -16
- package/dist/_internal/server/jobs/core/auctionSettlement.js +13 -4
- package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +44 -15
- package/dist/_internal/server/jobs/core/bundleStockSync.js +3 -4
- package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +44 -0
- package/dist/_internal/server/jobs/core/event-draw-reasons.d.ts +78 -0
- package/dist/_internal/server/jobs/core/event-draw-reasons.js +133 -0
- package/dist/_internal/server/jobs/core/listingProcessor.js +28 -8
- package/dist/_internal/server/jobs/core/onOrderCreate.js +12 -1
- package/dist/_internal/server/jobs/core/onScamReportCreate.js +13 -2
- package/dist/_internal/server/jobs/core/onScamReportRejected.js +8 -2
- package/dist/_internal/server/jobs/core/onScamReportVerified.js +8 -2
- package/dist/_internal/server/jobs/core/onStoreWrite.js +11 -4
- package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.js +5 -4
- package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.js +1 -4
- package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.js +1 -2
- package/dist/_internal/server/jobs/core/promotions.js +7 -4
- package/dist/_internal/server/jobs/core/searchIndexBuild.d.ts +7 -0
- package/dist/_internal/server/jobs/core/searchIndexBuild.js +211 -0
- package/dist/_internal/server/jobs/core/triggerEventRaffle.d.ts +35 -0
- package/dist/_internal/server/jobs/core/triggerEventRaffle.js +213 -31
- package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +20 -14
- package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +15 -15
- package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
- package/dist/_internal/server/jobs/handlers/index.js +1 -0
- package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/onProductWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/onReviewWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/onScamReportUpdate.js +18 -0
- package/dist/_internal/server/jobs/handlers/onStoreWrite.js +18 -0
- package/dist/_internal/server/jobs/handlers/searchIndexBuild.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/searchIndexBuild.js +2 -0
- package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +8 -0
- package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +15 -6
- package/dist/_internal/shared/actions/action-registry.js +29 -0
- package/dist/_internal/shared/cache/revalidate-targets.d.ts +0 -1
- package/dist/_internal/shared/cache/revalidate-targets.js +10 -8
- package/dist/_internal/shared/checkout/rules/_defaults.js +0 -2
- package/dist/_internal/shared/checkout/rules/_limits.d.ts +14 -1
- package/dist/_internal/shared/checkout/rules/_limits.js +14 -1
- package/dist/_internal/shared/checkout/rules/_registry.js +2 -0
- package/dist/_internal/shared/checkout/rules/auction.rule.js +9 -1
- package/dist/_internal/shared/checkout/rules/bundle.rule.js +13 -0
- package/dist/_internal/shared/checkout/rules/index.d.ts +2 -0
- package/dist/_internal/shared/checkout/rules/index.js +9 -0
- package/dist/_internal/shared/checkout/rules/offer.rule.js +0 -1
- package/dist/_internal/shared/checkout/rules/payment-gate.d.ts +26 -0
- package/dist/_internal/shared/checkout/rules/payment-gate.js +133 -0
- package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +29 -8
- package/dist/_internal/shared/checkout/rules/spares.rule.d.ts +16 -0
- package/dist/_internal/shared/checkout/rules/spares.rule.js +5 -0
- package/dist/_internal/shared/checkout/rules/types.d.ts +26 -2
- package/dist/_internal/shared/config/schema.d.ts +122 -0
- package/dist/_internal/shared/features/cart/schema.js +3 -2
- package/dist/_internal/shared/features/events/config.d.ts +14 -0
- package/dist/_internal/shared/features/events/config.js +14 -0
- package/dist/_internal/shared/features/notifications/action-url.js +8 -0
- package/dist/_internal/shared/features/products/group-rules.d.ts +75 -0
- package/dist/_internal/shared/features/products/group-rules.js +142 -0
- package/dist/_internal/shared/features/site-settings/types.d.ts +11 -0
- package/dist/_internal/shared/features/sticker-trace/codec.d.ts +81 -0
- package/dist/_internal/shared/features/sticker-trace/codec.js +30 -0
- package/dist/_internal/shared/features/sticker-trace/config.d.ts +81 -0
- package/dist/_internal/shared/features/sticker-trace/config.js +177 -0
- package/dist/_internal/shared/features/sticker-trace/cut-contour.d.ts +20 -0
- package/dist/_internal/shared/features/sticker-trace/cut-contour.js +60 -0
- package/dist/_internal/shared/features/sticker-trace/export/build-export-set.d.ts +65 -0
- package/dist/_internal/shared/features/sticker-trace/export/build-export-set.js +176 -0
- package/dist/_internal/shared/features/sticker-trace/export/cut-svg.d.ts +56 -0
- package/dist/_internal/shared/features/sticker-trace/export/cut-svg.js +120 -0
- package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.d.ts +92 -0
- package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.js +153 -0
- package/dist/_internal/shared/features/sticker-trace/export/nesting.d.ts +51 -0
- package/dist/_internal/shared/features/sticker-trace/export/nesting.js +110 -0
- package/dist/_internal/shared/features/sticker-trace/export/page-sizes.d.ts +68 -0
- package/dist/_internal/shared/features/sticker-trace/export/page-sizes.js +223 -0
- package/dist/_internal/shared/features/sticker-trace/export/part-tiling.d.ts +51 -0
- package/dist/_internal/shared/features/sticker-trace/export/part-tiling.js +178 -0
- package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.d.ts +26 -0
- package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.js +134 -0
- package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.d.ts +40 -0
- package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.js +195 -0
- package/dist/_internal/shared/features/sticker-trace/index.d.ts +2 -0
- package/dist/_internal/shared/features/sticker-trace/index.js +59 -0
- package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.d.ts +11 -0
- package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.js +66 -0
- package/dist/_internal/shared/features/sticker-trace/math/edt.d.ts +27 -0
- package/dist/_internal/shared/features/sticker-trace/math/edt.js +165 -0
- package/dist/_internal/shared/features/sticker-trace/math/label.d.ts +15 -0
- package/dist/_internal/shared/features/sticker-trace/math/label.js +156 -0
- package/dist/_internal/shared/features/sticker-trace/math/marching-squares.d.ts +16 -0
- package/dist/_internal/shared/features/sticker-trace/math/marching-squares.js +242 -0
- package/dist/_internal/shared/features/sticker-trace/math/morphology.d.ts +46 -0
- package/dist/_internal/shared/features/sticker-trace/math/morphology.js +168 -0
- package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.d.ts +88 -0
- package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.js +286 -0
- package/dist/_internal/shared/features/sticker-trace/math/rdp.d.ts +10 -0
- package/dist/_internal/shared/features/sticker-trace/math/rdp.js +74 -0
- package/dist/_internal/shared/features/sticker-trace/resume.d.ts +50 -0
- package/dist/_internal/shared/features/sticker-trace/resume.js +160 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cluster.d.ts +20 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cluster.js +132 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.d.ts +28 -0
- package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.js +120 -0
- package/dist/_internal/shared/features/sticker-trace/trace/flood.d.ts +21 -0
- package/dist/_internal/shared/features/sticker-trace/trace/flood.js +104 -0
- package/dist/_internal/shared/features/sticker-trace/trace/geometry.d.ts +3 -0
- package/dist/_internal/shared/features/sticker-trace/trace/geometry.js +140 -0
- package/dist/_internal/shared/features/sticker-trace/trace/line-filter.d.ts +15 -0
- package/dist/_internal/shared/features/sticker-trace/trace/line-filter.js +138 -0
- package/dist/_internal/shared/features/sticker-trace/trace/merge.d.ts +27 -0
- package/dist/_internal/shared/features/sticker-trace/trace/merge.js +187 -0
- package/dist/_internal/shared/features/sticker-trace/trace/paper.d.ts +32 -0
- package/dist/_internal/shared/features/sticker-trace/trace/paper.js +147 -0
- package/dist/_internal/shared/features/sticker-trace/trace/prefilter.d.ts +30 -0
- package/dist/_internal/shared/features/sticker-trace/trace/prefilter.js +125 -0
- package/dist/_internal/shared/features/sticker-trace/trace/quantise.d.ts +10 -0
- package/dist/_internal/shared/features/sticker-trace/trace/quantise.js +153 -0
- package/dist/_internal/shared/features/sticker-trace/trace/ridge.d.ts +88 -0
- package/dist/_internal/shared/features/sticker-trace/trace/ridge.js +344 -0
- package/dist/_internal/shared/features/sticker-trace/trace/segment.d.ts +10 -0
- package/dist/_internal/shared/features/sticker-trace/trace/segment.js +251 -0
- package/dist/_internal/shared/features/sticker-trace/types.d.ts +197 -0
- package/dist/_internal/shared/features/sticker-trace/types.js +49 -0
- package/dist/_internal/shared/listing-types/_registry.d.ts +35 -0
- package/dist/_internal/shared/listing-types/_registry.js +39 -1
- package/dist/_internal/shared/listing-types/art/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/art/config.js +3 -0
- package/dist/_internal/shared/listing-types/auction/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/auction/config.js +3 -0
- package/dist/_internal/shared/listing-types/availability.js +48 -0
- package/dist/_internal/shared/listing-types/capabilities.js +19 -0
- package/dist/_internal/shared/listing-types/classified/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/classified/config.js +3 -0
- package/dist/_internal/shared/listing-types/digital-code/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/digital-code/config.js +3 -0
- package/dist/_internal/shared/listing-types/feature-flags.d.ts +7 -0
- package/dist/_internal/shared/listing-types/feature-flags.js +10 -0
- package/dist/_internal/shared/listing-types/live/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/live/config.js +3 -0
- package/dist/_internal/shared/listing-types/pre-order/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/pre-order/config.js +3 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/prize-draw/config.js +3 -0
- package/dist/_internal/shared/listing-types/spares/config.d.ts +74 -0
- package/dist/_internal/shared/listing-types/spares/config.js +60 -0
- package/dist/_internal/shared/listing-types/spares/ctas.d.ts +1 -0
- package/dist/_internal/shared/listing-types/spares/ctas.js +4 -0
- package/dist/_internal/shared/listing-types/spares/og.js +1 -0
- package/dist/_internal/shared/listing-types/spares/schema.d.ts +2 -0
- package/dist/_internal/shared/listing-types/spares/schema.js +3 -0
- package/dist/_internal/shared/listing-types/spares/seed-factory.d.ts +1 -0
- package/dist/_internal/shared/listing-types/spares/seed-factory.js +1 -0
- package/dist/_internal/shared/listing-types/standard/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/standard/config.js +3 -0
- package/dist/_internal/shared/listing-types/stickers/config.d.ts +2 -0
- package/dist/_internal/shared/listing-types/stickers/config.js +3 -0
- package/dist/_internal/shared/media/limits.d.ts +12 -2
- package/dist/_internal/shared/media/limits.js +12 -2
- package/dist/_internal/shared/search/artifact-url.d.ts +35 -0
- package/dist/_internal/shared/search/artifact-url.js +119 -0
- package/dist/_internal/shared/search/index-record.d.ts +68 -0
- package/dist/_internal/shared/search/index-record.js +96 -0
- package/dist/_internal/shared/search/match.d.ts +76 -0
- package/dist/_internal/shared/search/match.js +264 -0
- package/dist/_internal/shared/search/to-groups.d.ts +52 -0
- package/dist/_internal/shared/search/to-groups.js +141 -0
- package/dist/client.d.ts +16 -9
- package/dist/client.js +16 -6
- package/dist/configs/eslint.js +22 -2
- package/dist/constants/api-endpoints.d.ts +107 -15
- package/dist/constants/api-endpoints.js +60 -5
- package/dist/constants/cache-invalidation.js +3 -1
- package/dist/constants/field-names.d.ts +13 -1
- package/dist/constants/field-names.js +42 -1
- package/dist/contracts/repository.d.ts +8 -7
- package/dist/contracts/search.d.ts +2 -2
- package/dist/contracts/table.d.ts +3 -3
- package/dist/contracts/table.js +3 -3
- package/dist/core/contact-submissions.repository.js +2 -2
- package/dist/core/integration-keys.js +7 -1
- package/dist/core/newsletter.repository.js +2 -2
- package/dist/core/site-config.js +1 -1
- package/dist/errors/error-codes.d.ts +30 -0
- package/dist/errors/error-codes.js +30 -0
- package/dist/errors/error-display-map.js +40 -1
- package/dist/features/about/components/PolicyPageView.d.ts +22 -2
- package/dist/features/about/components/PolicyPageView.js +14 -2
- package/dist/features/about/components/PublicProfileView.js +2 -1
- package/dist/features/about/components/ShippingPolicyView.js +42 -2
- package/dist/features/account/api/[userId]/addresses/route.js +1 -1
- package/dist/features/account/components/NotificationBell.js +1 -1
- package/dist/features/account/components/UserBidsView.js +1 -1
- package/dist/features/account/components/index.d.ts +0 -8
- package/dist/features/account/components/index.js +0 -4
- package/dist/features/account/hooks/useProfileStats.js +5 -1
- package/dist/features/addresses/repository/addresses.repository.d.ts +33 -6
- package/dist/features/addresses/repository/addresses.repository.js +86 -9
- package/dist/features/addresses/schemas/firestore.d.ts +17 -6
- package/dist/features/admin/actions/admin-actions.js +16 -1
- package/dist/features/admin/actions/notification-actions.js +15 -6
- package/dist/features/admin/api/bids/route.js +1 -1
- package/dist/features/admin/api/coupons/route.js +1 -1
- package/dist/features/admin/api/products/route.js +1 -1
- package/dist/features/admin/api/reviews/route.js +1 -1
- package/dist/features/admin/components/AdminAdEditorView.js +19 -5
- package/dist/features/admin/components/AdminAuditLogView.js +1 -1
- package/dist/features/admin/components/AdminBlogEditorView.js +0 -1
- package/dist/features/admin/components/AdminBlogView.js +1 -1
- package/dist/features/admin/components/AdminBrandsView.js +17 -1
- package/dist/features/admin/components/AdminCategoryEditorView.js +19 -3
- package/dist/features/admin/components/AdminContactView.js +1 -1
- package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -3
- package/dist/features/admin/components/AdminNavigationView.js +1 -1
- package/dist/features/admin/components/AdminNewsletterView.js +1 -1
- package/dist/features/admin/components/AdminOrdersView.js +9 -2
- package/dist/features/admin/components/AdminPageHeader.js +1 -1
- package/dist/features/admin/components/AdminPayoutsView.js +1 -1
- package/dist/features/admin/components/AdminPrizeDrawsView.js +11 -0
- package/dist/features/admin/components/AdminProductEditorView.d.ts +10 -1
- package/dist/features/admin/components/AdminProductEditorView.js +41 -39
- package/dist/features/admin/components/AdminProductsView.js +10 -3
- package/dist/features/admin/components/AdminScammersView.js +1 -1
- package/dist/features/admin/components/AdminSectionsView.js +21 -5
- package/dist/features/admin/components/AdminSessionsView.js +1 -1
- package/dist/features/admin/components/AdminSidebar.js +1 -1
- package/dist/features/admin/components/AdminSiteSettingsView.js +39 -8
- package/dist/features/admin/components/AdminSparesView.d.ts +12 -0
- package/dist/features/admin/components/AdminSparesView.js +30 -0
- package/dist/features/admin/components/AdminSublistingCategoriesView.js +22 -1
- package/dist/features/admin/components/AdminTeamView.js +1 -1
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +0 -1
- package/dist/features/admin/components/AdminUsersView.js +10 -8
- package/dist/features/admin/components/DataListingView.d.ts +2 -1
- package/dist/features/admin/components/DataListingView.js +9 -4
- package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +0 -2
- package/dist/features/admin/components/index.d.ts +2 -0
- package/dist/features/admin/components/index.js +1 -0
- package/dist/features/admin/components/sections/adminSectionsTypes.js +7 -0
- package/dist/features/admin/constants/filter-tabs.d.ts +3 -0
- package/dist/features/admin/constants/filter-tabs.js +1 -0
- package/dist/features/admin/hooks/useAdminListing.d.ts +1 -1
- package/dist/features/admin/repository/site-settings.repository.js +8 -3
- package/dist/features/admin/schemas/firestore.d.ts +88 -3
- package/dist/features/admin/schemas/firestore.js +32 -0
- package/dist/features/admin/types/index.d.ts +1 -1
- package/dist/features/auctions/actions/bid-actions.d.ts +2 -2
- package/dist/features/auctions/actions/bid-actions.js +16 -4
- package/dist/features/auctions/api/route.js +1 -1
- package/dist/features/auctions/components/AuctionBottomActions.js +4 -0
- package/dist/features/auctions/components/AuctionDetailPageView.js +4 -11
- package/dist/features/auctions/repository/bid.repository.d.ts +46 -4
- package/dist/features/auctions/repository/bid.repository.js +114 -13
- package/dist/features/auctions/schemas/firestore.d.ts +24 -4
- package/dist/features/auctions/schemas/firestore.js +1 -0
- package/dist/features/auth/actions/profile-actions.js +30 -4
- package/dist/features/auth/components/index.d.ts +0 -1
- package/dist/features/auth/components/index.js +0 -1
- package/dist/features/auth/repository/session.repository.d.ts +17 -3
- package/dist/features/auth/repository/session.repository.js +46 -5
- package/dist/features/auth/repository/token.repository.d.ts +27 -4
- package/dist/features/auth/repository/token.repository.js +65 -11
- package/dist/features/auth/repository/user.repository.d.ts +46 -7
- package/dist/features/auth/repository/user.repository.js +128 -15
- package/dist/features/auth/schemas/firestore.d.ts +65 -12
- package/dist/features/auth/schemas/firestore.js +13 -0
- package/dist/features/before-after/api/route.js +1 -1
- package/dist/features/blog/components/BlogListView.js +16 -3
- package/dist/features/blog/components/BlogPostView.js +1 -1
- package/dist/features/blog/schemas/index.d.ts +2 -2
- package/dist/features/business-documents/repository/business-documents.repository.d.ts +58 -0
- package/dist/features/business-documents/repository/business-documents.repository.js +54 -0
- package/dist/features/business-documents/schemas/firestore.d.ts +105 -0
- package/dist/features/business-documents/schemas/firestore.js +75 -0
- package/dist/features/cart/actions/cart-actions.js +83 -6
- package/dist/features/cart/api/route.js +1 -1
- package/dist/features/cart/repository/cart.repository.js +32 -4
- package/dist/features/cart/schemas/firestore.d.ts +20 -0
- package/dist/features/cart/schemas/index.d.ts +2 -2
- package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +1 -1
- package/dist/features/catalogue/repository/catalogue.repository.d.ts +7 -7
- package/dist/features/catalogue/repository/catalogue.repository.js +28 -10
- package/dist/features/catalogue/schemas/firestore.d.ts +11 -0
- package/dist/features/categories/api/[id]/price-guidance/route.d.ts +42 -0
- package/dist/features/categories/api/[id]/price-guidance/route.js +113 -0
- package/dist/features/categories/api/route.js +10 -10
- package/dist/features/categories/components/BrandDetailPageView.js +19 -3
- package/dist/features/categories/components/BrandDetailTabs.js +10 -0
- package/dist/features/categories/components/CategoriesIndexListing.js +23 -8
- package/dist/features/categories/components/CategoryDetailPageView.js +170 -13
- package/dist/features/categories/components/CategoryDetailTabs.js +12 -0
- package/dist/features/categories/components/CategoryGrid.js +10 -1
- package/dist/features/categories/components/CategorySelectorCreate.js +0 -1
- package/dist/features/categories/components/PriceGuidanceHint.d.ts +29 -0
- package/dist/features/categories/components/PriceGuidanceHint.js +61 -0
- package/dist/features/categories/components/SubcategoryCardRow.d.ts +27 -0
- package/dist/features/categories/components/SubcategoryCardRow.js +98 -0
- package/dist/features/categories/components/index.d.ts +0 -2
- package/dist/features/categories/components/index.js +0 -1
- package/dist/features/categories/constants/category-tabs.d.ts +20 -25
- package/dist/features/categories/constants/category-tabs.js +22 -39
- package/dist/features/categories/repository/categories.repository.d.ts +13 -0
- package/dist/features/categories/repository/categories.repository.js +51 -1
- package/dist/features/categories/schemas/firestore.d.ts +22 -1
- package/dist/features/categories/schemas/firestore.js +10 -0
- package/dist/features/categories/schemas/index.d.ts +8 -2
- package/dist/features/categories/schemas/index.js +2 -0
- package/dist/features/categories/types/index.d.ts +8 -0
- package/dist/features/categories/utils/taxonomy-visual.d.ts +34 -0
- package/dist/features/categories/utils/taxonomy-visual.js +74 -0
- package/dist/features/checkout/actions/checkout-value-otp-actions.js +8 -1
- package/dist/features/classified/components/ClassifiedDetailPageView.js +4 -9
- package/dist/features/collections/api/[slug]/route.js +3 -3
- package/dist/features/collections/api/route.js +1 -1
- package/dist/features/consultation/api/route.js +1 -1
- package/dist/features/consultation/repository/consultations.repository.js +1 -1
- package/dist/features/consultation/types/index.d.ts +1 -1
- package/dist/features/contact/components/ContactForm.js +1 -3
- package/dist/features/contact/components/ContactPageView.d.ts +33 -1
- package/dist/features/contact/components/ContactPageView.js +58 -28
- package/dist/features/corporate/api/route.js +1 -1
- package/dist/features/corporate/repository/corporate.repository.js +1 -1
- package/dist/features/corporate/types/index.d.ts +1 -1
- package/dist/features/cron/jobs/auction-expiry.job.js +1 -1
- package/dist/features/cron/jobs/preorder-reminder.job.js +1 -1
- package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +4 -9
- package/dist/features/events/actions/event-actions.d.ts +14 -0
- package/dist/features/events/actions/event-actions.js +82 -3
- package/dist/features/events/api/[id]/route.js +2 -2
- package/dist/features/events/components/AdminEventEditorView.js +22 -3
- package/dist/features/events/components/AdminEventsView.js +32 -8
- package/dist/features/events/components/EventRafflesSection.d.ts +34 -1
- package/dist/features/events/components/EventRafflesSection.js +52 -3
- package/dist/features/events/components/SpinWheelView.d.ts +2 -2
- package/dist/features/events/components/SpinWheelView.js +41 -4
- package/dist/features/events/repository/event-entry.repository.d.ts +14 -2
- package/dist/features/events/repository/event-entry.repository.js +41 -7
- package/dist/features/events/schemas/firestore.d.ts +17 -4
- package/dist/features/events/types/index.d.ts +37 -0
- package/dist/features/faq/repository/faqs.repository.js +1 -1
- package/dist/features/faq/schemas/index.d.ts +5 -2
- package/dist/features/faq/schemas/index.js +6 -0
- package/dist/features/faq/types/index.d.ts +0 -1
- package/dist/features/grouped/components/GroupedListingDetailView.js +9 -1
- package/dist/features/grouped/components/GroupedListingEditorView.js +17 -2
- package/dist/features/grouped/schemas/firestore.d.ts +5 -0
- package/dist/features/homepage/actions/homepage-section-actions.d.ts +3 -3
- package/dist/features/homepage/api/carousel/[id]/route.js +1 -1
- package/dist/features/homepage/api/carousel/route.js +4 -4
- package/dist/features/homepage/components/AnnouncementBar.d.ts +1 -9
- package/dist/features/homepage/components/AnnouncementBar.js +13 -19
- package/dist/features/homepage/components/CollectionCardsSection.d.ts +28 -6
- package/dist/features/homepage/components/CollectionCardsSection.js +43 -8
- package/dist/features/homepage/components/HowItWorksSection.d.ts +23 -6
- package/dist/features/homepage/components/HowItWorksSection.js +4 -4
- package/dist/features/homepage/components/MarketplaceHomepageView.js +6 -1
- package/dist/features/homepage/components/PromoGrid.d.ts +31 -2
- package/dist/features/homepage/components/PromoGrid.js +12 -3
- package/dist/features/homepage/components/TestimonialsCarousel.d.ts +34 -2
- package/dist/features/homepage/components/TestimonialsCarousel.js +1 -1
- package/dist/features/homepage/components/index.d.ts +0 -22
- package/dist/features/homepage/components/index.js +0 -12
- package/dist/features/homepage/index.d.ts +0 -2
- package/dist/features/homepage/index.js +0 -2
- package/dist/features/homepage/lib/section-renderer.d.ts +9 -0
- package/dist/features/homepage/lib/section-renderer.js +202 -58
- package/dist/features/homepage/repository/homepage-sections.repository.d.ts +35 -3
- package/dist/features/homepage/repository/homepage-sections.repository.js +58 -8
- package/dist/features/homepage/schemas/firestore.d.ts +112 -3
- package/dist/features/homepage/schemas/firestore.js +32 -2
- package/dist/features/homepage/schemas/index.d.ts +46 -17
- package/dist/features/homepage/schemas/index.js +39 -27
- package/dist/features/homepage/server.d.ts +0 -3
- package/dist/features/homepage/server.js +0 -3
- package/dist/features/homepage/types/index.d.ts +0 -47
- package/dist/features/homepage/types/index.js +49 -0
- package/dist/features/layout/AppLayoutShell.d.ts +11 -0
- package/dist/features/layout/AppLayoutShell.js +65 -13
- package/dist/features/layout/BottomActionsContext.d.ts +16 -0
- package/dist/features/layout/BottomActionsContext.js +5 -0
- package/dist/features/layout/BottomChrome.js +48 -9
- package/dist/features/layout/BottomNavItem.js +1 -1
- package/dist/features/layout/BottomNavbar.d.ts +14 -0
- package/dist/features/layout/BottomNavbar.js +43 -3
- package/dist/features/layout/BottomSheet.js +1 -1
- package/dist/features/layout/MainNavbar.d.ts +11 -0
- package/dist/features/layout/NavbarLayout.d.ts +3 -0
- package/dist/features/layout/NavbarLayout.js +88 -11
- package/dist/features/layout/SideActionDock.d.ts +1 -0
- package/dist/features/layout/SideActionDock.js +219 -0
- package/dist/features/layout/TitleBarLayout.js +1 -1
- package/dist/features/layout/cta-anchor.d.ts +31 -0
- package/dist/features/layout/cta-anchor.js +31 -0
- package/dist/features/layout/hooks/useBottomActions.d.ts +7 -0
- package/dist/features/layout/hooks/useBottomActions.js +6 -1
- package/dist/features/layout/index.d.ts +9 -1
- package/dist/features/layout/index.js +9 -1
- package/dist/features/layout/useCtaReveal.d.ts +24 -0
- package/dist/features/layout/useCtaReveal.js +82 -0
- package/dist/features/layout/useHoldToOpen.d.ts +41 -0
- package/dist/features/layout/useHoldToOpen.js +84 -0
- package/dist/features/live/components/LiveItemDetailPageView.js +4 -9
- package/dist/features/lottery/repository/lottery-entry.repository.d.ts +18 -3
- package/dist/features/lottery/repository/lottery-entry.repository.js +48 -6
- package/dist/features/lottery/schemas/firestore.d.ts +33 -5
- package/dist/features/loyalty/api/balance/route.js +1 -1
- package/dist/features/loyalty/api/history/route.js +1 -1
- package/dist/features/media/MediaImage.js +0 -1
- package/dist/features/media/MediaPickerModal.js +7 -1
- package/dist/features/media/hooks/useMedia.js +17 -0
- package/dist/features/media/modals/ImageEditor.js +5 -1
- package/dist/features/media/modals/VideoThumbnailSelector.js +17 -1
- package/dist/features/media/repository/media-assets.repository.d.ts +65 -0
- package/dist/features/media/repository/media-assets.repository.js +31 -0
- package/dist/features/media/trust-signals.d.ts +85 -0
- package/dist/features/media/trust-signals.js +126 -0
- package/dist/features/media/upload/CameraCapture.js +16 -1
- package/dist/features/media/upload/ImageUpload.js +42 -4
- package/dist/features/media/upload/MediaUploadField.js +69 -13
- package/dist/features/media/upload/downscale-image.d.ts +56 -0
- package/dist/features/media/upload/downscale-image.js +150 -0
- package/dist/features/messages/components/ConversationThreadView.js +45 -2
- package/dist/features/messages/components/MessageSellerButton.d.ts +15 -1
- package/dist/features/messages/components/MessageSellerButton.js +10 -2
- package/dist/features/messages/schemas/firestore.d.ts +15 -0
- package/dist/features/orders/hooks/useOrders.js +4 -2
- package/dist/features/orders/repository/orders.repository.d.ts +15 -4
- package/dist/features/orders/repository/orders.repository.js +52 -20
- package/dist/features/orders/schemas/firestore.d.ts +15 -4
- package/dist/features/orders/schemas/index.d.ts +8 -8
- package/dist/features/orders/types/index.d.ts +2 -2
- package/dist/features/parts/components/PartDetailPageView.d.ts +14 -1
- package/dist/features/parts/components/PartDetailPageView.js +2 -2
- package/dist/features/parts/components/PartsIndexPageView.d.ts +11 -2
- package/dist/features/parts/components/PartsIndexPageView.js +2 -2
- package/dist/features/parts/components/PartsSearchBox.d.ts +9 -0
- package/dist/features/parts/components/PartsSearchBox.js +57 -0
- package/dist/features/parts/schemas/firestore.d.ts +149 -3
- package/dist/features/parts/schemas/firestore.js +184 -0
- package/dist/features/payments/repository/payments.repository.js +2 -2
- package/dist/features/payments/repository/payout.repository.d.ts +38 -6
- package/dist/features/payments/repository/payout.repository.js +84 -23
- package/dist/features/payments/repository/saved-payment-methods.repository.d.ts +17 -6
- package/dist/features/payments/repository/saved-payment-methods.repository.js +59 -11
- package/dist/features/payments/schemas/firestore.d.ts +14 -3
- package/dist/features/payments/schemas/saved-methods-firestore.d.ts +12 -1
- package/dist/features/pre-orders/api/[slug]/route.js +1 -1
- package/dist/features/pre-orders/api/admin/route.js +1 -1
- package/dist/features/pre-orders/api/route.js +1 -1
- package/dist/features/pre-orders/components/PreOrderDetailPageView.js +4 -11
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +1 -1
- package/dist/features/pre-orders/repository/pre-orders.repository.d.ts +3 -3
- package/dist/features/pre-orders/repository/pre-orders.repository.js +6 -6
- package/dist/features/price-index/components/PriceIndexToolView.d.ts +3 -1
- package/dist/features/price-index/components/PriceIndexToolView.js +92 -13
- package/dist/features/products/api/[id]/route.js +1 -1
- package/dist/features/products/components/CompareOverlay.d.ts +18 -1
- package/dist/features/products/components/CompareOverlay.js +21 -2
- package/dist/features/products/components/CustomSectionTabContent.d.ts +31 -0
- package/dist/features/products/components/CustomSectionTabContent.js +29 -3
- package/dist/features/products/components/GroupMemberPicker.d.ts +19 -1
- package/dist/features/products/components/GroupMemberPicker.js +46 -8
- package/dist/features/products/components/GroupSettingsPanel.d.ts +11 -1
- package/dist/features/products/components/GroupSettingsPanel.js +91 -3
- package/dist/features/products/components/ListingBottomActions.js +4 -0
- package/dist/features/products/components/PrizeDrawDetailPageView.js +1 -1
- package/dist/features/products/components/PrizeDrawEntryActions.d.ts +15 -1
- package/dist/features/products/components/PrizeDrawEntryActions.js +70 -8
- package/dist/features/products/components/ProductDetailPageView.js +75 -15
- package/dist/features/products/components/ProductForm.d.ts +13 -1
- package/dist/features/products/components/ProductForm.js +16 -2
- package/dist/features/products/components/ProductGalleryClient.js +2 -2
- package/dist/features/products/components/ProductGrid.js +12 -1
- package/dist/features/products/components/ProductsIndexListing.d.ts +16 -1
- package/dist/features/products/components/ProductsIndexListing.js +3 -3
- package/dist/features/products/components/ShowGroupSection.js +15 -2
- package/dist/features/products/components/SparesListView.d.ts +7 -0
- package/dist/features/products/components/SparesListView.js +39 -0
- package/dist/features/products/components/index.d.ts +0 -2
- package/dist/features/products/components/index.js +0 -1
- package/dist/features/products/config/listing-type-listing-config.d.ts +0 -3
- package/dist/features/products/config/listing-type-listing-config.js +27 -2
- package/dist/features/products/constants/action-defs.d.ts +1 -0
- package/dist/features/products/constants/action-defs.js +1 -0
- package/dist/features/products/constants/listing-tabs.d.ts +9 -0
- package/dist/features/products/constants/listing-tabs.js +3 -2
- package/dist/features/products/hooks/useProducts.js +2 -2
- package/dist/features/products/repository/products.repository.d.ts +98 -0
- package/dist/features/products/repository/products.repository.js +248 -18
- package/dist/features/products/schemas/firestore.d.ts +97 -4
- package/dist/features/products/schemas/firestore.js +104 -0
- package/dist/features/products/schemas/index.d.ts +12 -21
- package/dist/features/products/schemas/index.js +23 -6
- package/dist/features/products/types/index.d.ts +46 -2
- package/dist/features/products/utils/group-member-image.d.ts +39 -0
- package/dist/features/products/utils/group-member-image.js +3 -0
- package/dist/features/products/utils/listing-badge-variant.js +4 -0
- package/dist/features/promotions/api/route.js +1 -1
- package/dist/features/reviews/actions/review-actions.d.ts +6 -6
- package/dist/features/reviews/actions/review-actions.js +22 -8
- package/dist/features/reviews/components/ReviewDetailPageView.js +13 -1
- package/dist/features/reviews/components/ReviewsIndexPageView.js +21 -4
- package/dist/features/reviews/components/ReviewsList.js +1 -1
- package/dist/features/reviews/repository/reviews.repository.d.ts +19 -7
- package/dist/features/reviews/repository/reviews.repository.js +63 -12
- package/dist/features/reviews/schemas/firestore.d.ts +13 -2
- package/dist/features/reviews/schemas/index.d.ts +2 -2
- package/dist/features/scams/actions/scam-actions.js +16 -4
- package/dist/features/scams/components/ScamProfileView.js +1 -1
- package/dist/features/search/components/EntityTypeahead.d.ts +44 -0
- package/dist/features/search/components/EntityTypeahead.js +92 -0
- package/dist/features/search/components/Search.d.ts +12 -1
- package/dist/features/search/components/Search.js +47 -3
- package/dist/features/search/components/SearchFacetRail.d.ts +11 -0
- package/dist/features/search/components/SearchFacetRail.js +92 -0
- package/dist/features/search/components/SearchResultsClient.d.ts +33 -0
- package/dist/features/search/components/SearchResultsClient.js +103 -0
- package/dist/features/search/components/SearchResultsPageView.d.ts +15 -1
- package/dist/features/search/components/SearchResultsPageView.js +3 -2
- package/dist/features/search/components/index.d.ts +0 -6
- package/dist/features/search/components/index.js +0 -3
- package/dist/features/search/hooks/useNavSuggestions.d.ts +13 -0
- package/dist/features/search/hooks/useScopedSearch.d.ts +34 -0
- package/dist/features/search/hooks/useScopedSearch.js +114 -0
- package/dist/features/search/hooks/useSearchIndex.d.ts +34 -0
- package/dist/features/search/hooks/useSearchIndex.js +172 -0
- package/dist/features/search/hooks/useSiteSearch.d.ts +26 -0
- package/dist/features/search/hooks/useSiteSearch.js +149 -0
- package/dist/features/search/index.d.ts +0 -4
- package/dist/features/search/index.js +0 -4
- package/dist/features/search/manifest.d.ts +12 -0
- package/dist/features/search/manifest.js +17 -2
- package/dist/features/search/server.d.ts +0 -3
- package/dist/features/search/server.js +0 -3
- package/dist/features/seller/actions/offer-actions.d.ts +5 -5
- package/dist/features/seller/actions/offer-actions.js +38 -8
- package/dist/features/seller/actions/seller-actions.js +34 -7
- package/dist/features/seller/api/coupons/route.js +1 -1
- package/dist/features/seller/api/products/route.js +1 -1
- package/dist/features/seller/api/store/route.js +1 -1
- package/dist/features/seller/components/SellerBidsView.js +1 -1
- package/dist/features/seller/components/SellerCouponsView.js +1 -1
- package/dist/features/seller/components/SellerListingTypeView.d.ts +1 -1
- package/dist/features/seller/components/SellerListingTypeView.js +29 -1
- package/dist/features/seller/components/SellerOrdersView.js +1 -1
- package/dist/features/seller/components/SellerPayoutSettingsView.js +35 -15
- package/dist/features/seller/components/SellerPayoutsView.js +1 -1
- package/dist/features/seller/components/SellerProductShell.d.ts +1 -1
- package/dist/features/seller/components/SellerProductShell.js +2 -2
- package/dist/features/seller/components/SellerProductsView.js +1 -1
- package/dist/features/seller/components/SellerShippingView.js +0 -1
- package/dist/features/seller/components/SellerSidebar.js +1 -1
- package/dist/features/seller/components/SellerSparesView.d.ts +17 -0
- package/dist/features/seller/components/SellerSparesView.js +6 -0
- package/dist/features/seller/components/SellerStorefrontView.js +0 -1
- package/dist/features/seller/components/index.d.ts +2 -4
- package/dist/features/seller/components/index.js +1 -2
- package/dist/features/seller/repository/offer.repository.d.ts +15 -3
- package/dist/features/seller/repository/offer.repository.js +43 -7
- package/dist/features/seller/schemas/firestore.d.ts +14 -3
- package/dist/features/seller/schemas/index.d.ts +4 -4
- package/dist/features/seller/schemas/order-forms.d.ts +39 -0
- package/dist/features/seller/schemas/order-forms.js +37 -0
- package/dist/features/shell/CommandPalette.js +1 -1
- package/dist/features/shell/FormShell.js +6 -2
- package/dist/features/shell/QuickFormDrawer.js +15 -1
- package/dist/features/shipments/components/AdminShipmentEditorView.js +0 -1
- package/dist/features/shipments/components/AdminShipmentsView.js +1 -1
- package/dist/features/sticker-trace/components/StickerCommitPanel.d.ts +30 -0
- package/dist/features/sticker-trace/components/StickerCommitPanel.js +93 -0
- package/dist/features/sticker-trace/components/StickerPrintPanel.d.ts +33 -0
- package/dist/features/sticker-trace/components/StickerPrintPanel.js +104 -0
- package/dist/features/sticker-trace/components/StickerRetryPanel.d.ts +20 -0
- package/dist/features/sticker-trace/components/StickerRetryPanel.js +128 -0
- package/dist/features/sticker-trace/components/StickerRunHistoryPanel.d.ts +45 -0
- package/dist/features/sticker-trace/components/StickerRunHistoryPanel.js +84 -0
- package/dist/features/sticker-trace/components/StickerTraceStudio.d.ts +27 -0
- package/dist/features/sticker-trace/components/StickerTraceStudio.js +171 -0
- package/dist/features/sticker-trace/constants/help-content.d.ts +23 -0
- package/dist/features/sticker-trace/constants/help-content.js +172 -0
- package/dist/features/sticker-trace/hooks/useLiveTrace.d.ts +27 -0
- package/dist/features/sticker-trace/hooks/useLiveTrace.js +160 -0
- package/dist/features/sticker-trace/hooks/useStickerTraceProgress.d.ts +22 -0
- package/dist/features/sticker-trace/hooks/useStickerTraceProgress.js +106 -0
- package/dist/features/sticker-trace/repository/sticker-sheets.repository.d.ts +113 -0
- package/dist/features/sticker-trace/repository/sticker-sheets.repository.js +146 -0
- package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.d.ts +132 -0
- package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.js +174 -0
- package/dist/features/sticker-trace/schemas/firestore.d.ts +267 -0
- package/dist/features/sticker-trace/schemas/firestore.js +79 -0
- package/dist/features/sticker-trace/server.d.ts +8 -0
- package/dist/features/sticker-trace/server.js +51 -0
- package/dist/features/stores/actions/store-query-actions.d.ts +2 -2
- package/dist/features/stores/actions/store-query-actions.js +7 -2
- package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -3
- package/dist/features/stores/api/[storeSlug]/products/route.js +3 -3
- package/dist/features/stores/api/[storeSlug]/reviews/route.js +1 -1
- package/dist/features/stores/api/[storeSlug]/route.js +1 -1
- package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -1
- package/dist/features/stores/components/StoreDetailLayoutView.js +7 -82
- package/dist/features/stores/components/StoreHeader.js +1 -2
- package/dist/features/stores/components/StoreNavTabs.js +17 -2
- package/dist/features/stores/components/StoreSparesPageView.d.ts +27 -0
- package/dist/features/stores/components/StoreSparesPageView.js +48 -0
- package/dist/features/stores/manifest.js +8 -4
- package/dist/features/stores/schemas/firestore.d.ts +19 -0
- package/dist/features/support/repository/support.repository.d.ts +14 -3
- package/dist/features/support/repository/support.repository.js +93 -13
- package/dist/features/support/schemas/firestore.d.ts +16 -5
- package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +61 -19
- package/dist/features/tester/seed-data/authored/buying__browsing-search.js +19 -3
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +96 -0
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +4 -0
- package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +478 -0
- package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +54 -32
- package/dist/features/tester/seed-data/authored/content-discovery__events.js +36 -10
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +209 -0
- package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +3 -2
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +73 -0
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +340 -0
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +90 -0
- package/dist/features/tester/seed-data/authored/index.js +24 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +1 -0
- package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +57 -0
- package/dist/features/tester/seed-data/authored/selling__media-limits.js +19 -17
- package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +10 -5
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +77 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +58 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +2 -0
- package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +284 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +558 -34
- package/dist/index.d.ts +27 -80
- package/dist/index.js +62 -115
- package/dist/next/api/routeHandler.js +9 -0
- package/dist/next/routing/require-record.d.ts +13 -0
- package/dist/next/routing/require-record.js +62 -0
- package/dist/next/routing/route-map.d.ts +46 -5
- package/dist/next/routing/route-map.js +70 -3
- package/dist/providers/db-firebase/base.d.ts +4 -2
- package/dist/providers/db-firebase/base.js +21 -5
- package/dist/providers/db-firebase/base.repository.d.ts +33 -9
- package/dist/providers/db-firebase/base.repository.js +55 -0
- package/dist/providers/db-firebase/rtdb-paths.d.ts +12 -0
- package/dist/providers/db-firebase/rtdb-paths.js +12 -0
- package/dist/react/ErrorBoundary.js +6 -1
- package/dist/react/hooks/realtime-event-constants.d.ts +1 -0
- package/dist/react/hooks/realtime-event-constants.js +8 -0
- package/dist/react/hooks/useEntityDelete.js +5 -1
- package/dist/react/hooks/useMessage.js +5 -1
- package/dist/repositories/index.d.ts +2 -2
- package/dist/repositories/index.js +6 -1
- package/dist/schemas/registry.d.ts +28 -26
- package/dist/schemas/registry.js +31 -14
- package/dist/schemas/webhooks/google-oauth.d.ts +2 -2
- package/dist/security/blind-index-tokens.d.ts +54 -0
- package/dist/security/blind-index-tokens.js +152 -0
- package/dist/security/encrypted.d.ts +117 -0
- package/dist/security/encrypted.js +100 -0
- package/dist/security/index.d.ts +6 -3
- package/dist/security/index.js +17 -3
- package/dist/security/pii-accessors.d.ts +71 -0
- package/dist/security/pii-accessors.js +150 -0
- package/dist/security/pii-encrypt.d.ts +0 -8
- package/dist/security/pii-encrypt.js +22 -15
- package/dist/security/pii-mask.d.ts +18 -0
- package/dist/security/pii-mask.js +27 -0
- package/dist/security/settings-encryption.d.ts +35 -0
- package/dist/security/settings-encryption.js +91 -0
- package/dist/seed/_helpers/brand-rows.js +38 -14
- package/dist/seed/_helpers/category-forest.js +73 -7
- package/dist/seed/_helpers/category-images-generated.d.ts +25 -6
- package/dist/seed/_helpers/category-images-generated.js +81 -6
- package/dist/seed/_helpers/category-models.d.ts +1 -1
- package/dist/seed/_helpers/category-models.js +7 -1
- package/dist/seed/_helpers/category-parts-glossary-map.js +8 -0
- package/dist/seed/_helpers/category-parts.d.ts +1 -1
- package/dist/seed/_helpers/category-parts.js +50 -2
- package/dist/seed/_helpers/character-features.d.ts +1 -1
- package/dist/seed/_helpers/character-features.js +2 -1
- package/dist/seed/_helpers/franchise-rows.js +10 -2
- package/dist/seed/_helpers/media.d.ts +47 -0
- package/dist/seed/_helpers/media.js +34 -0
- package/dist/seed/_helpers/search-txt-wrappers.d.ts +6 -6
- package/dist/seed/_helpers/search-txt-wrappers.js +22 -0
- package/dist/seed/addresses-seed-data.d.ts +2 -2
- package/dist/seed/authenticity-knowledge-seed-data.d.ts +78 -0
- package/dist/seed/authenticity-knowledge-seed-data.js +10729 -0
- package/dist/seed/bids-seed-data.d.ts +2 -2
- package/dist/seed/bids-seed-data.js +23 -2
- package/dist/seed/categories-seed-data.js +124 -20
- package/dist/seed/events-seed-data.d.ts +2 -2
- package/dist/seed/events-seed-data.js +5 -0
- package/dist/seed/faq-seed-data.js +175 -5
- package/dist/seed/grouped-listings-seed-data.js +16 -0
- package/dist/seed/homepage-sections-seed-data.js +131 -26
- package/dist/seed/index.d.ts +3 -3
- package/dist/seed/index.js +3 -2
- package/dist/seed/lottery-entries-seed-data.d.ts +2 -2
- package/dist/seed/manifest.js +3 -0
- package/dist/seed/media-assets-seed-data.d.ts +1 -1
- package/dist/seed/media-assets-seed-data.js +746 -196
- package/dist/seed/model-composition-seed-data.js +122 -6
- package/dist/seed/offers-seed-data.d.ts +2 -2
- package/dist/seed/offers-seed-data.js +1 -1
- package/dist/seed/orders-seed-data.d.ts +2 -2
- package/dist/seed/part-glossary-seed-data.d.ts +1 -1
- package/dist/seed/part-glossary-seed-data.js +37219 -463
- package/dist/seed/payouts-seed-data.d.ts +2 -2
- package/dist/seed/payouts-seed-data.js +1 -1
- package/dist/seed/products-art-seed-data.js +7 -18
- package/dist/seed/products-auctions-seed-data.js +56 -47
- package/dist/seed/products-beyblade-x-seed-data.d.ts +2 -0
- package/dist/seed/products-beyblade-x-seed-data.js +441 -0
- package/dist/seed/products-catalogue-seed-data.d.ts +5 -5
- package/dist/seed/products-catalogue-seed-data.js +1500 -1240
- package/dist/seed/products-classifieds-seed-data.js +9 -27
- package/dist/seed/products-digital-codes-seed-data.js +9 -18
- package/dist/seed/products-live-items-seed-data.js +5 -13
- package/dist/seed/products-preorders-seed-data.js +67 -33
- package/dist/seed/products-prize-draws-seed-data.js +8 -17
- package/dist/seed/products-spares-seed-data.d.ts +2 -0
- package/dist/seed/products-spares-seed-data.js +368 -0
- package/dist/seed/products-standard-seed-data.js +39 -126
- package/dist/seed/products-stickers-seed-data.js +59 -15
- package/dist/seed/reviews-seed-data.d.ts +1 -2
- package/dist/seed/seed-purpose.js +7 -0
- package/dist/seed/sessions-seed-data.d.ts +2 -2
- package/dist/seed/sessions-seed-data.js +5 -0
- package/dist/seed/site-settings-seed-data.js +9 -1
- package/dist/seed/support-tickets-seed-data.d.ts +2 -2
- package/dist/seed/support-tickets-seed-data.js +1 -1
- package/dist/seed/users-seed-data.d.ts +2 -2
- package/dist/seed/users-seed-data.js +1 -1
- package/dist/seo/json-ld.d.ts +25 -0
- package/dist/seo/json-ld.js +33 -1
- package/dist/server-entry.d.ts +3 -1
- package/dist/server-entry.js +2 -2
- package/dist/server.d.ts +27 -12
- package/dist/server.js +86 -28
- package/dist/styles.css +438 -1
- package/dist/tailwind-input.css +31 -17
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/Accordion.js +1 -1
- package/dist/ui/components/Breadcrumb.js +1 -1
- package/dist/ui/components/Button.js +7 -1
- package/dist/ui/components/DetailPageGallery.js +0 -2
- package/dist/ui/components/DetailPageHero.js +0 -1
- package/dist/ui/components/DetailPageTabs.js +1 -1
- package/dist/ui/components/Divider.js +3 -3
- package/dist/ui/components/FilterChipGroup.d.ts +11 -0
- package/dist/ui/components/FilterChipGroup.js +1 -1
- package/dist/ui/components/GatedPrice.js +5 -1
- package/dist/ui/components/HorizontalScroller.js +1 -1
- package/dist/ui/components/ImageGallery.js +6 -1
- package/dist/ui/components/ListingLayout.js +17 -11
- package/dist/ui/components/MediaTabs.style.css +81 -0
- package/dist/ui/components/OverflowRow.d.ts +92 -0
- package/dist/ui/components/OverflowRow.js +203 -0
- package/dist/ui/components/OverflowRow.style.css +235 -0
- package/dist/ui/components/Pagination.js +1 -1
- package/dist/ui/components/PendingValue.d.ts +45 -0
- package/dist/ui/components/PendingValue.js +7 -0
- package/dist/ui/components/Radio.style.css +119 -0
- package/dist/ui/components/RatingDisplay.js +2 -2
- package/dist/ui/components/RecordDetailModal.js +14 -1
- package/dist/ui/components/RowActionMenu.js +5 -1
- package/dist/ui/components/SettingsSection.js +0 -2
- package/dist/ui/components/SideDrawer.js +5 -1
- package/dist/ui/components/SideModal.js +9 -1
- package/dist/ui/components/SiteLogo.js +3 -0
- package/dist/ui/components/SiteMark.js +3 -0
- package/dist/ui/components/SortDropdown.js +1 -1
- package/dist/ui/components/SpecTable.d.ts +58 -0
- package/dist/ui/components/SpecTable.js +8 -0
- package/dist/ui/components/StarRating.js +1 -3
- package/dist/ui/components/SummaryCard.js +1 -1
- package/dist/ui/components/TabBarShell.d.ts +12 -1
- package/dist/ui/components/TabBarShell.js +3 -2
- package/dist/ui/components/Tabs.js +36 -24
- package/dist/ui/components/Toast.d.ts +3 -24
- package/dist/ui/components/Toast.js +2 -19
- package/dist/ui/components/TopBannerPortal.d.ts +15 -0
- package/dist/ui/components/TopBannerPortal.js +19 -0
- package/dist/ui/components/UnsavedChangesModal.js +5 -1
- package/dist/ui/components/index.style.css +2 -0
- package/dist/ui/components/row-collapse.d.ts +15 -0
- package/dist/ui/components/row-collapse.js +127 -0
- package/dist/ui/components/toast-context.d.ts +63 -0
- package/dist/ui/components/toast-context.js +48 -0
- package/dist/ui/components/top-banner-slot.d.ts +37 -0
- package/dist/ui/components/top-banner-slot.js +45 -0
- package/dist/ui/icons/icon-registry.d.ts +7 -0
- package/dist/ui/icons/icon-registry.js +25 -1
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.js +3 -0
- package/dist/utils/array.helper.d.ts +2 -2
- package/dist/utils/array.helper.js +5 -5
- package/dist/utils/id-generators.d.ts +6 -0
- package/dist/utils/id-generators.js +10 -0
- package/dist/utils/media-url.js +0 -2
- package/dist/utils/search-txt-builders.d.ts +28 -4
- package/dist/utils/search-txt-builders.js +41 -1
- package/dist/utils/search-txt-query.d.ts +12 -0
- package/dist/utils/search-txt-query.js +12 -0
- package/dist/validation/schemas.d.ts +8 -8
- package/package.json +6 -2
- package/scripts/dedupe-peer-deps.mjs +18 -0
- package/scripts/seed-cli.mjs +138 -26
- package/scripts/verify-css-build.mjs +118 -37
- package/dist/_internal/server/features/search/actions.d.ts +0 -7
- package/dist/_internal/server/features/search/actions.js +0 -21
- package/dist/_internal/server/features/search/data.d.ts +0 -15
- package/dist/_internal/server/features/search/data.js +0 -18
- package/dist/_internal/server/features/search/index.d.ts +0 -3
- package/dist/_internal/server/features/search/index.js +0 -2
- package/dist/features/account/components/UserAddressesView.d.ts +0 -13
- package/dist/features/account/components/UserAddressesView.js +0 -5
- package/dist/features/account/components/UserNotificationsView.d.ts +0 -15
- package/dist/features/account/components/UserNotificationsView.js +0 -12
- package/dist/features/account/components/UserSettingsView.d.ts +0 -16
- package/dist/features/account/components/UserSettingsView.js +0 -13
- package/dist/features/account/components/UserSupportView.d.ts +0 -3
- package/dist/features/account/components/UserSupportView.js +0 -166
- package/dist/features/admin/components/DemoSeedView.d.ts +0 -11
- package/dist/features/admin/components/DemoSeedView.js +0 -5
- package/dist/features/auth/components/AuthStatusPanel.d.ts +0 -10
- package/dist/features/auth/components/AuthStatusPanel.js +0 -22
- package/dist/features/categories/components/CategoryProductsView.d.ts +0 -45
- package/dist/features/categories/components/CategoryProductsView.js +0 -21
- package/dist/features/homepage/api/[id]/route.d.ts +0 -23
- package/dist/features/homepage/api/[id]/route.js +0 -103
- package/dist/features/homepage/api/route.d.ts +0 -14
- package/dist/features/homepage/api/route.js +0 -140
- package/dist/features/homepage/api/sections/[id]/route.d.ts +0 -26
- package/dist/features/homepage/api/sections/[id]/route.js +0 -95
- package/dist/features/homepage/api/sections/route.d.ts +0 -13
- package/dist/features/homepage/api/sections/route.js +0 -82
- package/dist/features/homepage/components/AdvertisementBanner.d.ts +0 -14
- package/dist/features/homepage/components/AdvertisementBanner.js +0 -35
- package/dist/features/homepage/components/BeforeAfterCard.d.ts +0 -9
- package/dist/features/homepage/components/BeforeAfterCard.js +0 -73
- package/dist/features/homepage/components/FeaturedResultsSection.d.ts +0 -17
- package/dist/features/homepage/components/FeaturedResultsSection.js +0 -17
- package/dist/features/homepage/components/HeroBanner.d.ts +0 -7
- package/dist/features/homepage/components/HeroBanner.js +0 -43
- package/dist/features/homepage/components/HeroSection.d.ts +0 -7
- package/dist/features/homepage/components/HeroSection.js +0 -6
- package/dist/features/homepage/components/HomepageSkeleton.d.ts +0 -2
- package/dist/features/homepage/components/HomepageSkeleton.js +0 -21
- package/dist/features/homepage/components/HomepageView.d.ts +0 -25
- package/dist/features/homepage/components/HomepageView.js +0 -5
- package/dist/features/homepage/components/HowItWorksInfoView.d.ts +0 -36
- package/dist/features/homepage/components/HowItWorksInfoView.js +0 -10
- package/dist/features/homepage/components/NewsletterBanner.d.ts +0 -23
- package/dist/features/homepage/components/NewsletterBanner.js +0 -37
- package/dist/features/homepage/components/SiteFeaturesSection.d.ts +0 -14
- package/dist/features/homepage/components/SiteFeaturesSection.js +0 -11
- package/dist/features/homepage/components/TrustBadges.d.ts +0 -6
- package/dist/features/homepage/components/TrustBadges.js +0 -46
- package/dist/features/homepage/components/TrustIndicatorsSection.d.ts +0 -12
- package/dist/features/homepage/components/TrustIndicatorsSection.js +0 -11
- package/dist/features/homepage/hooks/useHomepage.d.ts +0 -11
- package/dist/features/homepage/hooks/useHomepage.js +0 -17
- package/dist/features/homepage/hooks/useHomepageSections.d.ts +0 -2
- package/dist/features/homepage/hooks/useHomepageSections.js +0 -10
- package/dist/features/homepage/repository/homepage.repository.d.ts +0 -11
- package/dist/features/homepage/repository/homepage.repository.js +0 -25
- package/dist/features/layout/BottomActions.d.ts +0 -1
- package/dist/features/layout/BottomActions.js +0 -311
- package/dist/features/products/components/ProductsView.d.ts +0 -6
- package/dist/features/products/components/ProductsView.js +0 -5
- package/dist/features/search/actions/index.d.ts +0 -1
- package/dist/features/search/actions/index.js +0 -1
- package/dist/features/search/actions/search-actions.d.ts +0 -18
- package/dist/features/search/actions/search-actions.js +0 -43
- package/dist/features/search/api/route.d.ts +0 -22
- package/dist/features/search/api/route.js +0 -128
- package/dist/features/search/columns/index.d.ts +0 -17
- package/dist/features/search/columns/index.js +0 -49
- package/dist/features/search/components/SearchFiltersRow.d.ts +0 -22
- package/dist/features/search/components/SearchFiltersRow.js +0 -21
- package/dist/features/search/components/SearchResultsSection.d.ts +0 -53
- package/dist/features/search/components/SearchResultsSection.js +0 -35
- package/dist/features/search/components/SearchView.d.ts +0 -27
- package/dist/features/search/components/SearchView.js +0 -8
- package/dist/features/search/hooks/useSearch.d.ts +0 -21
- package/dist/features/search/hooks/useSearch.js +0 -33
- package/dist/features/search/repository/search.repository.d.ts +0 -14
- package/dist/features/search/repository/search.repository.js +0 -59
- package/dist/features/search/schemas/index.d.ts +0 -70
- package/dist/features/search/schemas/index.js +0 -36
- package/dist/features/search/types/index.d.ts +0 -48
- package/dist/features/seller/components/SellerStoreView.d.ts +0 -8
- package/dist/features/seller/components/SellerStoreView.js +0 -8
- package/dist/features/stores/components/StoreScopedSearch.d.ts +0 -17
- package/dist/features/stores/components/StoreScopedSearch.js +0 -27
- package/dist/seed/defaults/homepage-sections.d.ts +0 -2
- package/dist/seed/defaults/homepage-sections.js +0 -60
- package/dist/seed/factories/homepage-section.factory.d.ts +0 -10
- package/dist/seed/factories/homepage-section.factory.js +0 -13
- /package/dist/{features/search/types/index.js → _internal/shared/listing-types/spares/og.d.ts} +0 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHY: The print modal, the nester and the PDF writer each need to know how big
|
|
3
|
+
* a page is and how much of it may be printed on. Three copies of that
|
|
4
|
+
* table would disagree the first time one of them was corrected, and the
|
|
5
|
+
* symptom would be a cut file that is subtly the wrong size — which is only
|
|
6
|
+
* discoverable after it has been printed and cut.
|
|
7
|
+
* WHAT: Every page the tool can target, as data, in millimetres. Includes the
|
|
8
|
+
* Cricut mat sizes, because a mat IS a page as far as nesting is concerned.
|
|
9
|
+
*
|
|
10
|
+
* 🛑 Names are deliberately `PrintPageSize*`, not `PageSize*`. appkit already
|
|
11
|
+
* exports `PageSizeKey` from constants/pagination-presets, where it means ROWS
|
|
12
|
+
* PER PAGE. Two things called a page size, one of them paper and one of them
|
|
13
|
+
* pagination, is a confusion worth spending six characters to avoid.
|
|
14
|
+
*
|
|
15
|
+
* EXPORTS:
|
|
16
|
+
* MM_PER_INCH, inchesToMm, PrintPageSizeId, PrintPageSize, PtcArea,
|
|
17
|
+
* PRINT_PAGE_SIZES, PRINT_PAGE_SIZE_IDS, pageSizeById, customPageSize,
|
|
18
|
+
* printableAreaMm
|
|
19
|
+
*
|
|
20
|
+
* @tag domain:sticker-trace
|
|
21
|
+
* @tag layer:shared
|
|
22
|
+
* @tag pattern:none
|
|
23
|
+
* @tag access:isomorphic
|
|
24
|
+
* @tag consumers:export/machine-profiles,export/nesting,export/pdf-mosaic,StickerPrintModal
|
|
25
|
+
* @tag sideEffects:none
|
|
26
|
+
*/
|
|
27
|
+
/** The definition of the inch, exact by international agreement since 1959. */
|
|
28
|
+
export const MM_PER_INCH = 25.4;
|
|
29
|
+
/**
|
|
30
|
+
* Cricut publishes every dimension in inches, so the constants below are
|
|
31
|
+
* written in inches and converted here rather than being pre-multiplied. A
|
|
32
|
+
* pre-multiplied `114.3` loses the fact that it is 4.5", which is what you need
|
|
33
|
+
* when checking a number against Cricut's own documentation.
|
|
34
|
+
*/
|
|
35
|
+
export function inchesToMm(inches) {
|
|
36
|
+
return inches * MM_PER_INCH;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 5 mm is a conservative margin that every consumer inkjet and laser printer
|
|
40
|
+
* clears, chosen rather than measured. It is a DEFAULT, not a constraint: the
|
|
41
|
+
* print modal lets it be overridden per job, and borderless printers can take
|
|
42
|
+
* it to 0. Erring large costs a few mm of nesting area; erring small puts a cut
|
|
43
|
+
* line in the unprintable zone, where it simply does not appear.
|
|
44
|
+
*/
|
|
45
|
+
const PAPER_MARGIN_MM = 5;
|
|
46
|
+
/*
|
|
47
|
+
* Cricut Joy 2 figures below come from Cricut's own published documentation, as
|
|
48
|
+
* researched during planning — not from inference:
|
|
49
|
+
*
|
|
50
|
+
* cut width 4.5 in
|
|
51
|
+
* Smart Materials 4.5 x 48 in (one continuous shape to 4 ft)
|
|
52
|
+
* mats StandardGrip 4.5 x 6.5 · LightGrip 4.5 x 12 · Card 4.5 x 6.25
|
|
53
|
+
* PTC area, Letter 9.94 x 3.19 in
|
|
54
|
+
* PTC area, A4 10.62 x 3.07 in
|
|
55
|
+
*
|
|
56
|
+
* 🛑 Read the PTC pair carefully: the LONG number runs along the page's long
|
|
57
|
+
* edge and the SHORT one across it. On portrait A4 that is a 269.7 x 78.0 mm
|
|
58
|
+
* column. Transposing them yields an area wider than A4 itself, which is the
|
|
59
|
+
* obvious tell that they have been swapped.
|
|
60
|
+
*/
|
|
61
|
+
const JOY_MAT_WIDTH_IN = 4.5;
|
|
62
|
+
export const PRINT_PAGE_SIZES = {
|
|
63
|
+
a3: {
|
|
64
|
+
id: "a3",
|
|
65
|
+
label: "A3",
|
|
66
|
+
widthMm: 297,
|
|
67
|
+
heightMm: 420,
|
|
68
|
+
marginMm: PAPER_MARGIN_MM,
|
|
69
|
+
isMat: false,
|
|
70
|
+
},
|
|
71
|
+
a4: {
|
|
72
|
+
id: "a4",
|
|
73
|
+
label: "A4",
|
|
74
|
+
widthMm: 210,
|
|
75
|
+
heightMm: 297,
|
|
76
|
+
marginMm: PAPER_MARGIN_MM,
|
|
77
|
+
ptcArea: {
|
|
78
|
+
widthMm: inchesToMm(3.07),
|
|
79
|
+
heightMm: inchesToMm(10.62),
|
|
80
|
+
},
|
|
81
|
+
isMat: false,
|
|
82
|
+
},
|
|
83
|
+
a5: {
|
|
84
|
+
id: "a5",
|
|
85
|
+
label: "A5",
|
|
86
|
+
widthMm: 148,
|
|
87
|
+
heightMm: 210,
|
|
88
|
+
marginMm: PAPER_MARGIN_MM,
|
|
89
|
+
isMat: false,
|
|
90
|
+
},
|
|
91
|
+
letter: {
|
|
92
|
+
id: "letter",
|
|
93
|
+
label: "Letter",
|
|
94
|
+
widthMm: inchesToMm(8.5),
|
|
95
|
+
heightMm: inchesToMm(11),
|
|
96
|
+
marginMm: PAPER_MARGIN_MM,
|
|
97
|
+
ptcArea: {
|
|
98
|
+
widthMm: inchesToMm(3.19),
|
|
99
|
+
heightMm: inchesToMm(9.94),
|
|
100
|
+
},
|
|
101
|
+
isMat: false,
|
|
102
|
+
},
|
|
103
|
+
legal: {
|
|
104
|
+
id: "legal",
|
|
105
|
+
label: "Legal",
|
|
106
|
+
widthMm: inchesToMm(8.5),
|
|
107
|
+
heightMm: inchesToMm(14),
|
|
108
|
+
marginMm: PAPER_MARGIN_MM,
|
|
109
|
+
isMat: false,
|
|
110
|
+
},
|
|
111
|
+
tabloid: {
|
|
112
|
+
id: "tabloid",
|
|
113
|
+
label: "Tabloid",
|
|
114
|
+
widthMm: inchesToMm(11),
|
|
115
|
+
heightMm: inchesToMm(17),
|
|
116
|
+
marginMm: PAPER_MARGIN_MM,
|
|
117
|
+
isMat: false,
|
|
118
|
+
},
|
|
119
|
+
"joy-mat-standard": {
|
|
120
|
+
id: "joy-mat-standard",
|
|
121
|
+
label: 'Cricut Joy StandardGrip mat (4.5 x 6.5")',
|
|
122
|
+
widthMm: inchesToMm(JOY_MAT_WIDTH_IN),
|
|
123
|
+
heightMm: inchesToMm(6.5),
|
|
124
|
+
marginMm: 0,
|
|
125
|
+
isMat: true,
|
|
126
|
+
},
|
|
127
|
+
"joy-mat-long": {
|
|
128
|
+
id: "joy-mat-long",
|
|
129
|
+
label: 'Cricut Joy LightGrip mat (4.5 x 12")',
|
|
130
|
+
widthMm: inchesToMm(JOY_MAT_WIDTH_IN),
|
|
131
|
+
heightMm: inchesToMm(12),
|
|
132
|
+
marginMm: 0,
|
|
133
|
+
isMat: true,
|
|
134
|
+
},
|
|
135
|
+
"joy-mat-card": {
|
|
136
|
+
id: "joy-mat-card",
|
|
137
|
+
label: 'Cricut Joy Card mat (4.5 x 6.25")',
|
|
138
|
+
widthMm: inchesToMm(JOY_MAT_WIDTH_IN),
|
|
139
|
+
heightMm: inchesToMm(6.25),
|
|
140
|
+
marginMm: 0,
|
|
141
|
+
isMat: true,
|
|
142
|
+
},
|
|
143
|
+
"joy-smart-material": {
|
|
144
|
+
id: "joy-smart-material",
|
|
145
|
+
label: 'Cricut Joy Smart Material (4.5 x 48")',
|
|
146
|
+
widthMm: inchesToMm(JOY_MAT_WIDTH_IN),
|
|
147
|
+
heightMm: inchesToMm(48),
|
|
148
|
+
marginMm: 0,
|
|
149
|
+
isMat: true,
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* A placeholder row so the id union is total and the picker has something to
|
|
153
|
+
* select. Its dimensions are meaningless — always build the real one with
|
|
154
|
+
* `customPageSize()`, which is why both are 0 rather than a plausible-looking
|
|
155
|
+
* A4 that would silently stand in for a forgotten override.
|
|
156
|
+
*/
|
|
157
|
+
custom: {
|
|
158
|
+
id: "custom",
|
|
159
|
+
label: "Custom size",
|
|
160
|
+
widthMm: 0,
|
|
161
|
+
heightMm: 0,
|
|
162
|
+
marginMm: PAPER_MARGIN_MM,
|
|
163
|
+
isMat: false,
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
/** Stable display order for pickers: papers first, then mats, then custom. */
|
|
167
|
+
export const PRINT_PAGE_SIZE_IDS = [
|
|
168
|
+
"a4",
|
|
169
|
+
"a3",
|
|
170
|
+
"a5",
|
|
171
|
+
"letter",
|
|
172
|
+
"legal",
|
|
173
|
+
"tabloid",
|
|
174
|
+
"joy-mat-standard",
|
|
175
|
+
"joy-mat-long",
|
|
176
|
+
"joy-mat-card",
|
|
177
|
+
"joy-smart-material",
|
|
178
|
+
"custom",
|
|
179
|
+
];
|
|
180
|
+
export function pageSizeById(id) {
|
|
181
|
+
return PRINT_PAGE_SIZES[id];
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Build a custom page. Dimensions are caller-supplied and validated here rather
|
|
185
|
+
* than at each call site: a zero or negative page silently produces an empty
|
|
186
|
+
* nest, which reads as "nothing fitted" instead of "the page was never set".
|
|
187
|
+
*/
|
|
188
|
+
export function customPageSize(widthMm, heightMm, marginMm = PAPER_MARGIN_MM) {
|
|
189
|
+
if (!(widthMm > 0) || !(heightMm > 0)) {
|
|
190
|
+
throw new Error(`customPageSize: width and height must both be > 0 (got ${widthMm}x${heightMm})`);
|
|
191
|
+
}
|
|
192
|
+
if (marginMm < 0 || marginMm * 2 >= Math.min(widthMm, heightMm)) {
|
|
193
|
+
throw new Error(`customPageSize: margin ${marginMm}mm leaves no printable area on ${widthMm}x${heightMm}mm`);
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
...PRINT_PAGE_SIZES.custom,
|
|
197
|
+
widthMm,
|
|
198
|
+
heightMm,
|
|
199
|
+
marginMm,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* The area parts may actually be nested into.
|
|
204
|
+
*
|
|
205
|
+
* `forPrintThenCut` is not a styling choice — on a PTC target the usable region
|
|
206
|
+
* is the sensor-constrained sub-area, which is dramatically smaller than the
|
|
207
|
+
* page minus its margin. Defaulting it to `false` means a caller who forgets it
|
|
208
|
+
* gets the LARGER area, so the failure is a layout the machine rejects rather
|
|
209
|
+
* than one that silently wastes two thirds of the page. That direction is
|
|
210
|
+
* chosen deliberately: a rejected file is noticed, a wasteful one is not.
|
|
211
|
+
*/
|
|
212
|
+
export function printableAreaMm(page, forPrintThenCut = false) {
|
|
213
|
+
if (forPrintThenCut) {
|
|
214
|
+
if (!page.ptcArea) {
|
|
215
|
+
throw new Error(`printableAreaMm: ${page.id} has no Print-Then-Cut area; only ${PRINT_PAGE_SIZE_IDS.filter((id) => PRINT_PAGE_SIZES[id].ptcArea).join(", ")} do`);
|
|
216
|
+
}
|
|
217
|
+
return { widthMm: page.ptcArea.widthMm, heightMm: page.ptcArea.heightMm };
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
widthMm: page.widthMm - page.marginMm * 2,
|
|
221
|
+
heightMm: page.heightMm - page.marginMm * 2,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Rect } from "../types";
|
|
2
|
+
/** Default join allowance. Enough to butt or lap without a white line. */
|
|
3
|
+
export declare const DEFAULT_BLEED_MM = 2;
|
|
4
|
+
export interface TileSpec {
|
|
5
|
+
/** `#03a`, `#03b`, … — the suffix an operator reads off the printed sheet. */
|
|
6
|
+
label: string;
|
|
7
|
+
/** This tile's slice of the part, in the part's own mm space. */
|
|
8
|
+
regionMm: Rect;
|
|
9
|
+
/** Where the seam sits, as a fraction of the part's split axis. */
|
|
10
|
+
seamFraction: number;
|
|
11
|
+
}
|
|
12
|
+
export interface TilePlan {
|
|
13
|
+
ordinal: number;
|
|
14
|
+
name: string;
|
|
15
|
+
/** Which axis was cut. */
|
|
16
|
+
axis: "x" | "y";
|
|
17
|
+
tiles: TileSpec[];
|
|
18
|
+
bleedMm: number;
|
|
19
|
+
/** True when even the tiles exceed the limit — the part cannot be tiled to fit. */
|
|
20
|
+
stillOversized: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Per-column "detail" cost, for choosing where to cut.
|
|
24
|
+
*
|
|
25
|
+
* Cost is the count of alpha EDGES in a column — pixels whose opacity differs
|
|
26
|
+
* from their neighbour. A column through flat colour or empty space scores
|
|
27
|
+
* near zero; a column through lettering or a face scores high.
|
|
28
|
+
*
|
|
29
|
+
* 🛑 Edges, not opacity. Summing opacity finds the EMPTIEST column, which on a
|
|
30
|
+
* sticker is usually just outside the artwork — i.e. a seam that misses the
|
|
31
|
+
* part entirely and splits nothing. Counting transitions finds the quietest
|
|
32
|
+
* column that is still inside it.
|
|
33
|
+
*/
|
|
34
|
+
export declare function seamCostProfile(alpha: Uint8Array, width: number, height: number, axis: "x" | "y"): Float32Array;
|
|
35
|
+
/**
|
|
36
|
+
* Plan the tiles for one oversized part.
|
|
37
|
+
*
|
|
38
|
+
* `alpha` is the part's own mask at `maskWidth × maskHeight`; `bboxMm` is its
|
|
39
|
+
* real size. Splitting runs along the part's NARROWEST axis, because that is
|
|
40
|
+
* the one the width limit applies to and splitting the long axis would not help.
|
|
41
|
+
*/
|
|
42
|
+
export declare function planPartTiles(input: {
|
|
43
|
+
ordinal: number;
|
|
44
|
+
name: string;
|
|
45
|
+
bboxMm: Rect;
|
|
46
|
+
alpha: Uint8Array;
|
|
47
|
+
maskWidth: number;
|
|
48
|
+
maskHeight: number;
|
|
49
|
+
limitMm: number;
|
|
50
|
+
bleedMm?: number;
|
|
51
|
+
}): TilePlan;
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHY: A Cricut Joy 2's Print-Then-Cut area on A4 is a ~78mm column, and
|
|
3
|
+
* several stickers on a typical Beyblade sheet are wider than that. The
|
|
4
|
+
* alternatives are refusing to export them, silently scaling them — which
|
|
5
|
+
* yields stickers the wrong physical size — or splitting them.
|
|
6
|
+
* WHAT: Split an oversized part into tiles with a bleed overlap, choosing the
|
|
7
|
+
* seam through the least-detailed column rather than the midpoint.
|
|
8
|
+
*
|
|
9
|
+
* 🛑 THIS IS A COMPROMISE AND THE UI MUST SAY SO. A seam through sticker
|
|
10
|
+
* artwork is visible on the finished article. That is unavoidable, not a
|
|
11
|
+
* tuning failure — and the honest alternative, which the tool also offers, is
|
|
12
|
+
* to send the part to the print-shop profile where no width limit applies.
|
|
13
|
+
*
|
|
14
|
+
* 🛑 The seam is MEASURED from the artwork, never assumed. Splitting at the
|
|
15
|
+
* midpoint lands the join wherever the midpoint happens to be — through a face,
|
|
16
|
+
* through lettering — and those are exactly the places a human objects to.
|
|
17
|
+
*
|
|
18
|
+
* EXPORTS: TileSpec, TilePlan, planPartTiles, seamCostProfile
|
|
19
|
+
*
|
|
20
|
+
* @tag domain:sticker-trace
|
|
21
|
+
* @tag layer:shared
|
|
22
|
+
* @tag pattern:none
|
|
23
|
+
* @tag access:isomorphic
|
|
24
|
+
* @tag consumers:sticker-trace/export,PrintLayoutModal
|
|
25
|
+
* @tag sideEffects:none
|
|
26
|
+
*/
|
|
27
|
+
/** Default join allowance. Enough to butt or lap without a white line. */
|
|
28
|
+
export const DEFAULT_BLEED_MM = 2;
|
|
29
|
+
/**
|
|
30
|
+
* Per-column "detail" cost, for choosing where to cut.
|
|
31
|
+
*
|
|
32
|
+
* Cost is the count of alpha EDGES in a column — pixels whose opacity differs
|
|
33
|
+
* from their neighbour. A column through flat colour or empty space scores
|
|
34
|
+
* near zero; a column through lettering or a face scores high.
|
|
35
|
+
*
|
|
36
|
+
* 🛑 Edges, not opacity. Summing opacity finds the EMPTIEST column, which on a
|
|
37
|
+
* sticker is usually just outside the artwork — i.e. a seam that misses the
|
|
38
|
+
* part entirely and splits nothing. Counting transitions finds the quietest
|
|
39
|
+
* column that is still inside it.
|
|
40
|
+
*/
|
|
41
|
+
export function seamCostProfile(alpha, width, height, axis) {
|
|
42
|
+
const n = axis === "x" ? width : height;
|
|
43
|
+
const cost = new Float32Array(n);
|
|
44
|
+
if (axis === "x") {
|
|
45
|
+
for (let x = 0; x < width; x++) {
|
|
46
|
+
let edges = 0;
|
|
47
|
+
for (let y = 1; y < height; y++) {
|
|
48
|
+
const a = alpha[y * width + x] ?? 0;
|
|
49
|
+
const b = alpha[(y - 1) * width + x] ?? 0;
|
|
50
|
+
if (Math.abs(a - b) > 8)
|
|
51
|
+
edges++;
|
|
52
|
+
}
|
|
53
|
+
cost[x] = edges;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
for (let y = 0; y < height; y++) {
|
|
58
|
+
let edges = 0;
|
|
59
|
+
for (let x = 1; x < width; x++) {
|
|
60
|
+
const a = alpha[y * width + x] ?? 0;
|
|
61
|
+
const b = alpha[y * width + (x - 1)] ?? 0;
|
|
62
|
+
if (Math.abs(a - b) > 8)
|
|
63
|
+
edges++;
|
|
64
|
+
}
|
|
65
|
+
cost[y] = edges;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return cost;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Pick the cheapest seam within the window the width limit allows.
|
|
72
|
+
*
|
|
73
|
+
* 🛑 The search window is CONSTRAINED, not the whole part. A seam must leave
|
|
74
|
+
* both halves under the limit, so it can only sit between `size - limit` and
|
|
75
|
+
* `limit`. Searching the whole part and then clamping is how you get a seam
|
|
76
|
+
* reported at the quietest column and applied somewhere else.
|
|
77
|
+
*/
|
|
78
|
+
function cheapestSeam(cost, limitPx) {
|
|
79
|
+
const n = cost.length;
|
|
80
|
+
const lo = Math.max(1, n - limitPx);
|
|
81
|
+
const hi = Math.min(n - 1, limitPx);
|
|
82
|
+
if (lo >= hi)
|
|
83
|
+
return Math.floor(n / 2);
|
|
84
|
+
let bestIndex = Math.floor((lo + hi) / 2);
|
|
85
|
+
let bestCost = Number.POSITIVE_INFINITY;
|
|
86
|
+
for (let i = lo; i <= hi; i++) {
|
|
87
|
+
const c = cost[i] ?? 0;
|
|
88
|
+
/*
|
|
89
|
+
* Strictly-less-than keeps the FIRST cheapest column rather than the last.
|
|
90
|
+
* With a flat run of equally quiet columns that puts the seam at the start
|
|
91
|
+
* of the quiet region, which is stable: re-running on the same part gives
|
|
92
|
+
* the same seam, so a preview an operator approved does not move.
|
|
93
|
+
*/
|
|
94
|
+
if (c < bestCost) {
|
|
95
|
+
bestCost = c;
|
|
96
|
+
bestIndex = i;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return bestIndex;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Plan the tiles for one oversized part.
|
|
103
|
+
*
|
|
104
|
+
* `alpha` is the part's own mask at `maskWidth × maskHeight`; `bboxMm` is its
|
|
105
|
+
* real size. Splitting runs along the part's NARROWEST axis, because that is
|
|
106
|
+
* the one the width limit applies to and splitting the long axis would not help.
|
|
107
|
+
*/
|
|
108
|
+
export function planPartTiles(input) {
|
|
109
|
+
const bleed = input.bleedMm ?? DEFAULT_BLEED_MM;
|
|
110
|
+
const { width: wMm, height: hMm } = input.bboxMm;
|
|
111
|
+
// Split across the axis the limit actually binds.
|
|
112
|
+
const axis = wMm >= hMm ? "x" : "y";
|
|
113
|
+
const sizeMm = axis === "x" ? wMm : hMm;
|
|
114
|
+
const maskN = axis === "x" ? input.maskWidth : input.maskHeight;
|
|
115
|
+
const cost = seamCostProfile(input.alpha, input.maskWidth, input.maskHeight, axis);
|
|
116
|
+
const limitPx = Math.floor((input.limitMm / sizeMm) * maskN);
|
|
117
|
+
const seamPx = cheapestSeam(cost, limitPx);
|
|
118
|
+
const seamFraction = seamPx / maskN;
|
|
119
|
+
const seamMm = seamFraction * sizeMm;
|
|
120
|
+
/*
|
|
121
|
+
* Each tile carries the bleed INTO its neighbour, so the two overlap rather
|
|
122
|
+
* than abut. Without it the two printed pieces meet at a hairline the paper
|
|
123
|
+
* shows through — the join is then visible as a white line rather than as a
|
|
124
|
+
* slight doubling, and white is far more obvious.
|
|
125
|
+
*/
|
|
126
|
+
const firstEnd = Math.min(sizeMm, seamMm + bleed);
|
|
127
|
+
const secondStart = Math.max(0, seamMm - bleed);
|
|
128
|
+
const tiles = axis === "x"
|
|
129
|
+
? [
|
|
130
|
+
{
|
|
131
|
+
label: `#${String(input.ordinal).padStart(2, "0")}a`,
|
|
132
|
+
regionMm: { x: 0, y: 0, width: firstEnd, height: hMm },
|
|
133
|
+
seamFraction,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
label: `#${String(input.ordinal).padStart(2, "0")}b`,
|
|
137
|
+
regionMm: {
|
|
138
|
+
x: secondStart,
|
|
139
|
+
y: 0,
|
|
140
|
+
width: sizeMm - secondStart,
|
|
141
|
+
height: hMm,
|
|
142
|
+
},
|
|
143
|
+
seamFraction,
|
|
144
|
+
},
|
|
145
|
+
]
|
|
146
|
+
: [
|
|
147
|
+
{
|
|
148
|
+
label: `#${String(input.ordinal).padStart(2, "0")}a`,
|
|
149
|
+
regionMm: { x: 0, y: 0, width: wMm, height: firstEnd },
|
|
150
|
+
seamFraction,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
label: `#${String(input.ordinal).padStart(2, "0")}b`,
|
|
154
|
+
regionMm: {
|
|
155
|
+
x: 0,
|
|
156
|
+
y: secondStart,
|
|
157
|
+
width: wMm,
|
|
158
|
+
height: sizeMm - secondStart,
|
|
159
|
+
},
|
|
160
|
+
seamFraction,
|
|
161
|
+
},
|
|
162
|
+
];
|
|
163
|
+
/*
|
|
164
|
+
* 🛑 Reported, not silently re-split. A part more than twice the limit needs
|
|
165
|
+
* three or more tiles, and this plans TWO — saying so is what lets the UI
|
|
166
|
+
* offer the print-shop profile instead of handing over a plan that still does
|
|
167
|
+
* not fit. Pretending otherwise is the scaling mistake in another costume.
|
|
168
|
+
*/
|
|
169
|
+
const widest = Math.max(...tiles.map((t) => (axis === "x" ? t.regionMm.width : t.regionMm.height)));
|
|
170
|
+
return {
|
|
171
|
+
ordinal: input.ordinal,
|
|
172
|
+
name: input.name,
|
|
173
|
+
axis,
|
|
174
|
+
tiles,
|
|
175
|
+
bleedMm: bleed,
|
|
176
|
+
stillOversized: widest > input.limitMm,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { CutPath } from "../types";
|
|
2
|
+
export interface SimplifyResult {
|
|
3
|
+
paths: CutPath[];
|
|
4
|
+
nodesBefore: number;
|
|
5
|
+
nodesAfter: number;
|
|
6
|
+
/**
|
|
7
|
+
* Greatest distance any dropped control point sat from the curve that
|
|
8
|
+
* replaced it, in millimetres. 0 when nothing was dropped.
|
|
9
|
+
*
|
|
10
|
+
* 🛑 A MEASURED worst case, not an average. An average hides the one place a
|
|
11
|
+
* corner was rounded off, which is exactly the place a human would object to.
|
|
12
|
+
*/
|
|
13
|
+
maxDeviationMm: number;
|
|
14
|
+
/** True when the budget could not be met even at the coarsest pass. */
|
|
15
|
+
overBudget: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Simplify until the whole file fits `nodeBudget`.
|
|
19
|
+
*
|
|
20
|
+
* `null` budget means no ceiling — the print-shop profile — and returns the
|
|
21
|
+
* input untouched with a deviation of 0, which is the truthful answer rather
|
|
22
|
+
* than a no-op that still claims to have simplified.
|
|
23
|
+
*/
|
|
24
|
+
export declare function simplifyToBudget(paths: readonly CutPath[], nodeBudget: number | null, opts?: {
|
|
25
|
+
maxPasses?: number;
|
|
26
|
+
}): SimplifyResult;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* WHY: Design Space gives up past roughly 50,000 nodes. A `max`-tier trace at
|
|
3
|
+
* 0.015mm across sixty parts can plausibly exceed that — so without a
|
|
4
|
+
* separate budget here, the most precise tier would produce a file the
|
|
5
|
+
* machine cannot open, making it strictly worse than `precise` at higher
|
|
6
|
+
* cost.
|
|
7
|
+
* WHAT: Re-simplify an already-traced outline to a node budget, and REPORT the
|
|
8
|
+
* deviation that bought.
|
|
9
|
+
*
|
|
10
|
+
* 🛑 THIS IS A SECOND, INDEPENDENT BUDGET. The trace simplifies to whatever the
|
|
11
|
+
* scan deserves; this simplifies to whatever the machine can open. Tying them
|
|
12
|
+
* together is the mistake — and the reporting is half the point: an operator
|
|
13
|
+
* told "simplified to 48,900 nodes, max deviation 0.08mm" can decide whether
|
|
14
|
+
* that matters, where one told nothing cannot.
|
|
15
|
+
*
|
|
16
|
+
* 🛑 It only ever REMOVES nodes. A budget pass that moved a point would be
|
|
17
|
+
* editing the traced geometry, and the deviation figure would then be a lie
|
|
18
|
+
* about a shape nobody chose.
|
|
19
|
+
*
|
|
20
|
+
* EXPORTS: SimplifyResult, simplifyToBudget
|
|
21
|
+
*
|
|
22
|
+
* @tag domain:sticker-trace
|
|
23
|
+
* @tag layer:shared
|
|
24
|
+
* @tag pattern:none
|
|
25
|
+
* @tag access:isomorphic
|
|
26
|
+
* @tag consumers:sticker-trace/export
|
|
27
|
+
* @tag sideEffects:none
|
|
28
|
+
*/
|
|
29
|
+
function dist(a, b) {
|
|
30
|
+
const dx = a.x - b.x;
|
|
31
|
+
const dy = a.y - b.y;
|
|
32
|
+
return Math.sqrt(dx * dx + dy * dy);
|
|
33
|
+
}
|
|
34
|
+
function nodeCount(paths) {
|
|
35
|
+
let n = 0;
|
|
36
|
+
for (const p of paths)
|
|
37
|
+
n += p.segments.length + 1;
|
|
38
|
+
return n;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Drop every Nth segment, splicing its neighbours together.
|
|
42
|
+
*
|
|
43
|
+
* Deliberately a uniform stride rather than a curvature-weighted pass: a
|
|
44
|
+
* curvature pass keeps corners and eats smooth runs, which on a kiss-cut
|
|
45
|
+
* outline means it removes exactly the long gentle arcs that make a sticker
|
|
46
|
+
* look right, and keeps the scanner noise it mistook for detail. A uniform
|
|
47
|
+
* stride degrades the whole outline evenly and predictably.
|
|
48
|
+
*/
|
|
49
|
+
function thinOnce(path) {
|
|
50
|
+
if (path.segments.length < 4)
|
|
51
|
+
return { path, deviation: 0 };
|
|
52
|
+
const kept = [];
|
|
53
|
+
let deviation = 0;
|
|
54
|
+
let cursor = path.start;
|
|
55
|
+
for (let i = 0; i < path.segments.length; i++) {
|
|
56
|
+
const seg = path.segments[i];
|
|
57
|
+
const isLast = i === path.segments.length - 1;
|
|
58
|
+
/*
|
|
59
|
+
* Keep every other segment, and ALWAYS the last one so the outline still
|
|
60
|
+
* returns to its start. Dropping the closing segment leaves a gap the SVG
|
|
61
|
+
* writer's `Z` would bridge with a straight line — a visible flat edge on a
|
|
62
|
+
* curved sticker.
|
|
63
|
+
*/
|
|
64
|
+
if (i % 2 === 0 || isLast) {
|
|
65
|
+
kept.push(seg);
|
|
66
|
+
cursor = seg.to;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
// Merged away: the dropped endpoint's distance from the surviving one is
|
|
70
|
+
// the error this pass introduced at that location.
|
|
71
|
+
deviation = Math.max(deviation, dist(seg.to, cursor));
|
|
72
|
+
}
|
|
73
|
+
return { path: { start: path.start, segments: kept }, deviation };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Simplify until the whole file fits `nodeBudget`.
|
|
77
|
+
*
|
|
78
|
+
* `null` budget means no ceiling — the print-shop profile — and returns the
|
|
79
|
+
* input untouched with a deviation of 0, which is the truthful answer rather
|
|
80
|
+
* than a no-op that still claims to have simplified.
|
|
81
|
+
*/
|
|
82
|
+
export function simplifyToBudget(paths, nodeBudget, opts = {}) {
|
|
83
|
+
const nodesBefore = nodeCount(paths);
|
|
84
|
+
if (nodeBudget === null || nodesBefore <= nodeBudget) {
|
|
85
|
+
return {
|
|
86
|
+
paths: [...paths],
|
|
87
|
+
nodesBefore,
|
|
88
|
+
nodesAfter: nodesBefore,
|
|
89
|
+
maxDeviationMm: 0,
|
|
90
|
+
overBudget: false,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/*
|
|
94
|
+
* Bounded. Each pass roughly halves the node count, so 12 passes can reduce
|
|
95
|
+
* a 50,000-node file to single digits — far past any real budget. An
|
|
96
|
+
* unbounded loop on a degenerate path is how a Function burns its 300s.
|
|
97
|
+
*/
|
|
98
|
+
const maxPasses = opts.maxPasses ?? 12;
|
|
99
|
+
let current = [...paths];
|
|
100
|
+
let maxDeviation = 0;
|
|
101
|
+
for (let pass = 0; pass < maxPasses; pass++) {
|
|
102
|
+
if (nodeCount(current) <= nodeBudget)
|
|
103
|
+
break;
|
|
104
|
+
const next = [];
|
|
105
|
+
for (const p of current) {
|
|
106
|
+
const { path, deviation } = thinOnce(p);
|
|
107
|
+
next.push(path);
|
|
108
|
+
maxDeviation = Math.max(maxDeviation, deviation);
|
|
109
|
+
}
|
|
110
|
+
/*
|
|
111
|
+
* Stop if a pass achieved nothing — every path is already at its floor of
|
|
112
|
+
* three segments. Continuing would spin for the remaining passes and still
|
|
113
|
+
* report over-budget, just later.
|
|
114
|
+
*/
|
|
115
|
+
if (nodeCount(next) === nodeCount(current)) {
|
|
116
|
+
current = next;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
current = next;
|
|
120
|
+
}
|
|
121
|
+
const nodesAfter = nodeCount(current);
|
|
122
|
+
return {
|
|
123
|
+
paths: current,
|
|
124
|
+
nodesBefore,
|
|
125
|
+
nodesAfter,
|
|
126
|
+
maxDeviationMm: Math.round(maxDeviation * 1000) / 1000,
|
|
127
|
+
/*
|
|
128
|
+
* Reported rather than thrown. The operator may still want the file — to
|
|
129
|
+
* split it across two exports, or to open it in something that is not
|
|
130
|
+
* Design Space — and refusing to produce it takes that choice away.
|
|
131
|
+
*/
|
|
132
|
+
overBudget: nodesAfter > nodeBudget,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { DecodedRaster, Point } from "../types";
|
|
2
|
+
/** One filled region: a colour and the rings that bound it. */
|
|
3
|
+
export interface VectorRegion {
|
|
4
|
+
/** 8-bit channels, as sampled from the region's own pixels. */
|
|
5
|
+
rgb: readonly [number, number, number];
|
|
6
|
+
/** Closed rings in part-local pixel space. */
|
|
7
|
+
rings: Point[][];
|
|
8
|
+
/** Share of the part's opaque pixels this region covers. */
|
|
9
|
+
coverage: number;
|
|
10
|
+
}
|
|
11
|
+
export interface VectoriseResult {
|
|
12
|
+
regions: VectorRegion[];
|
|
13
|
+
nodeCount: number;
|
|
14
|
+
/**
|
|
15
|
+
* Fraction of opaque pixels whose colour the vector version gets wrong,
|
|
16
|
+
* 0..1, measured by refilling rather than estimated.
|
|
17
|
+
*/
|
|
18
|
+
deviation: number;
|
|
19
|
+
/**
|
|
20
|
+
* 🛑 TRUE when vectorising made this part WORSE. The caller must surface it:
|
|
21
|
+
* the whole reason this export is opt-in is that a gradient-heavy part bands
|
|
22
|
+
* visibly and costs tens of thousands of nodes to do it.
|
|
23
|
+
*/
|
|
24
|
+
notRecommended: boolean;
|
|
25
|
+
/** Why, in words, when `notRecommended`. Empty otherwise. */
|
|
26
|
+
reason: string;
|
|
27
|
+
}
|
|
28
|
+
export interface VectoriseOptions {
|
|
29
|
+
/** Palette size. More colours means finer bands and far more nodes. */
|
|
30
|
+
colours?: number;
|
|
31
|
+
/** RDP tolerance in pixels. */
|
|
32
|
+
simplifyPx?: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @param raster the part's own RGBA crop
|
|
36
|
+
* @param alpha its cut mask — which pixels belong to the sticker at all
|
|
37
|
+
*/
|
|
38
|
+
export declare function vectoriseArtwork(raster: DecodedRaster, alpha: Uint8Array, opts?: VectoriseOptions): VectoriseResult;
|
|
39
|
+
/** Serialise the regions to SVG paths, for an artwork layer. */
|
|
40
|
+
export declare function regionsToSvgPaths(regions: readonly VectorRegion[]): string;
|