snice 7.0.2 → 7.0.3
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/adapters/react/SniceProvider.js +1 -1
- package/adapters/react/SniceRouter.js +1 -1
- package/adapters/react/matchRoute.js +1 -1
- package/adapters/react/useRequestHandler.js +1 -1
- package/dist/cdn/accordion/snice-accordion.js +1 -1
- package/dist/cdn/action-bar/snice-action-bar.js +1 -1
- package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
- package/dist/cdn/alert/snice-alert.js +1 -1
- package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
- package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
- package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
- package/dist/cdn/availability/snice-availability.js +1 -1
- package/dist/cdn/avatar/snice-avatar.js +1 -1
- package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
- package/dist/cdn/badge/snice-badge.js +1 -1
- package/dist/cdn/banner/snice-banner.js +1 -1
- package/dist/cdn/binpack/snice-binpack.js +1 -1
- package/dist/cdn/book/snice-book.js +1 -1
- package/dist/cdn/booking/snice-booking.js +1 -1
- package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
- package/dist/cdn/button/snice-button.js +1 -1
- package/dist/cdn/calendar/snice-calendar.js +1 -1
- package/dist/cdn/camera/snice-camera.js +1 -1
- package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
- package/dist/cdn/candlestick/snice-candlestick.js +1 -1
- package/dist/cdn/card/snice-card.js +1 -1
- package/dist/cdn/carousel/snice-carousel.js +1 -1
- package/dist/cdn/cart/snice-cart.js +1 -1
- package/dist/cdn/chart/snice-chart.js +1 -1
- package/dist/cdn/chat/snice-chat.js +1 -1
- package/dist/cdn/checkbox/snice-checkbox.js +1 -1
- package/dist/cdn/chip/snice-chip.js +1 -1
- package/dist/cdn/code-block/snice-code-block.js +1 -1
- package/dist/cdn/color-display/snice-color-display.js +1 -1
- package/dist/cdn/color-picker/snice-color-picker.js +1 -1
- package/dist/cdn/command-palette/snice-command-palette.js +1 -1
- package/dist/cdn/comments/snice-comments.js +1 -1
- package/dist/cdn/countdown/snice-countdown.js +1 -1
- package/dist/cdn/cropper/snice-cropper.js +1 -1
- package/dist/cdn/data-card/snice-data-card.js +1 -1
- package/dist/cdn/date-picker/snice-date-picker.js +1 -1
- package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
- package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
- package/dist/cdn/diff/snice-diff.js +1 -1
- package/dist/cdn/divider/snice-divider.js +1 -1
- package/dist/cdn/doc/snice-doc.js +1 -1
- package/dist/cdn/draw/snice-draw.js +1 -1
- package/dist/cdn/drawer/snice-drawer.js +1 -1
- package/dist/cdn/empty-state/snice-empty-state.js +1 -1
- package/dist/cdn/estimate/snice-estimate.js +1 -1
- package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
- package/dist/cdn/file-upload/snice-file-upload.js +1 -1
- package/dist/cdn/flip-card/snice-flip-card.js +1 -1
- package/dist/cdn/flow/snice-flow.js +1 -1
- package/dist/cdn/form-layout/snice-form-layout.js +1 -1
- package/dist/cdn/funnel/snice-funnel.js +1 -1
- package/dist/cdn/gantt/snice-gantt.js +1 -1
- package/dist/cdn/gauge/snice-gauge.js +1 -1
- package/dist/cdn/grid/snice-grid.js +1 -1
- package/dist/cdn/heatmap/snice-heatmap.js +1 -1
- package/dist/cdn/image/snice-image.js +1 -1
- package/dist/cdn/input/snice-input.js +1 -1
- package/dist/cdn/invoice/snice-invoice.js +1 -1
- package/dist/cdn/kanban/snice-kanban.js +1 -1
- package/dist/cdn/key-value/snice-key-value.js +1 -1
- package/dist/cdn/kpi/snice-kpi.js +1 -1
- package/dist/cdn/layout/snice-layout.js +1 -1
- package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
- package/dist/cdn/link/snice-link.js +1 -1
- package/dist/cdn/link-preview/snice-link-preview.js +1 -1
- package/dist/cdn/list/snice-list.js +1 -1
- package/dist/cdn/location/snice-location.js +1 -1
- package/dist/cdn/login/snice-login.js +1 -1
- package/dist/cdn/map/snice-map.js +1 -1
- package/dist/cdn/markdown/snice-markdown.js +1 -1
- package/dist/cdn/masonry/snice-masonry.js +1 -1
- package/dist/cdn/menu/snice-menu.js +1 -1
- package/dist/cdn/message-strip/snice-message-strip.js +1 -1
- package/dist/cdn/modal/snice-modal.js +1 -1
- package/dist/cdn/music-player/snice-music-player.js +1 -1
- package/dist/cdn/nav/snice-nav.js +1 -1
- package/dist/cdn/network-graph/snice-network-graph.js +1 -1
- package/dist/cdn/notification-center/snice-notification-center.js +1 -1
- package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
- package/dist/cdn/org-chart/snice-org-chart.js +1 -1
- package/dist/cdn/pagination/snice-pagination.js +1 -1
- package/dist/cdn/paint/snice-paint.js +1 -1
- package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
- package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
- package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
- package/dist/cdn/popover/snice-popover.js +1 -1
- package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
- package/dist/cdn/product-card/snice-product-card.js +1 -1
- package/dist/cdn/progress/snice-progress.js +1 -1
- package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
- package/dist/cdn/qr-code/snice-qr-code.js +1 -1
- package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
- package/dist/cdn/radio/snice-radio.js +1 -1
- package/dist/cdn/range-slider/snice-range-slider.js +1 -1
- package/dist/cdn/rating/snice-rating.js +1 -1
- package/dist/cdn/receipt/snice-receipt.js +1 -1
- package/dist/cdn/recipe/snice-recipe.js +2 -2
- package/dist/cdn/recipe/snice-recipe.js.map +1 -1
- package/dist/cdn/recipe/snice-recipe.min.js +1 -1
- package/dist/cdn/recipe/snice-recipe.min.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.js +4 -4
- package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.js +4 -4
- package/dist/cdn/runtime/snice-runtime.js.map +1 -1
- package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
- package/dist/cdn/sankey/snice-sankey.js +1 -1
- package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
- package/dist/cdn/select/snice-select.js +1 -1
- package/dist/cdn/skeleton/snice-skeleton.js +1 -1
- package/dist/cdn/slider/snice-slider.js +1 -1
- package/dist/cdn/sortable/snice-sortable.js +1 -1
- package/dist/cdn/sparkline/snice-sparkline.js +1 -1
- package/dist/cdn/spinner/snice-spinner.js +1 -1
- package/dist/cdn/split-button/snice-split-button.js +1 -1
- package/dist/cdn/split-pane/snice-split-pane.js +1 -1
- package/dist/cdn/spotlight/snice-spotlight.js +1 -1
- package/dist/cdn/stat-group/snice-stat-group.js +1 -1
- package/dist/cdn/step-input/snice-step-input.js +1 -1
- package/dist/cdn/stepper/snice-stepper.js +1 -1
- package/dist/cdn/switch/snice-switch.js +1 -1
- package/dist/cdn/table/README.md +2 -2
- package/dist/cdn/table/snice-table.esm.js +20 -3
- package/dist/cdn/table/snice-table.esm.js.map +1 -1
- package/dist/cdn/table/snice-table.esm.min.js +35 -35
- package/dist/cdn/table/snice-table.esm.min.js.map +1 -1
- package/dist/cdn/table/snice-table.js +20 -3
- package/dist/cdn/table/snice-table.js.map +1 -1
- package/dist/cdn/table/snice-table.min.js +29 -29
- package/dist/cdn/table/snice-table.min.js.map +1 -1
- package/dist/cdn/tabs/snice-tabs.js +1 -1
- package/dist/cdn/tag/snice-tag.js +1 -1
- package/dist/cdn/tag-input/snice-tag-input.js +1 -1
- package/dist/cdn/terminal/snice-terminal.js +2 -1
- package/dist/cdn/terminal/snice-terminal.js.map +1 -1
- package/dist/cdn/terminal/snice-terminal.min.js +1 -0
- package/dist/cdn/terminal/snice-terminal.min.js.map +1 -1
- package/dist/cdn/testimonial/snice-testimonial.js +1 -1
- package/dist/cdn/textarea/snice-textarea.js +1 -1
- package/dist/cdn/time-picker/snice-time-picker.js +1 -1
- package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
- package/dist/cdn/timeline/snice-timeline.js +1 -1
- package/dist/cdn/timer/snice-timer.js +1 -1
- package/dist/cdn/toast/snice-toast.js +1 -1
- package/dist/cdn/tooltip/snice-tooltip.js +1 -1
- package/dist/cdn/tree/snice-tree.js +1 -1
- package/dist/cdn/treemap/snice-treemap.js +1 -1
- package/dist/cdn/user-card/snice-user-card.js +1 -1
- package/dist/cdn/video-player/README.md +1 -1
- package/dist/cdn/video-player/snice-video-player.js +2 -1
- package/dist/cdn/video-player/snice-video-player.js.map +1 -1
- package/dist/cdn/video-player/snice-video-player.min.js +1 -0
- package/dist/cdn/video-player/snice-video-player.min.js.map +1 -1
- package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
- package/dist/cdn/waterfall/snice-waterfall.js +1 -1
- package/dist/cdn/weather/snice-weather.js +1 -1
- package/dist/cdn/work-order/snice-work-order.js +1 -1
- package/dist/components/recipe/snice-recipe.js +1 -1
- package/dist/components/recipe/snice-recipe.js.map +1 -1
- package/dist/components/table/snice-table.d.ts +1 -0
- package/dist/components/table/snice-table.js +18 -2
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/table/table-tree-data.js +1 -0
- package/dist/components/table/table-tree-data.js.map +1 -1
- package/dist/components/terminal/snice-terminal.js +1 -0
- package/dist/components/terminal/snice-terminal.js.map +1 -1
- package/dist/components/video-player/snice-video-player.js +1 -0
- package/dist/components/video-player/snice-video-player.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.iife.js +1 -1
- package/dist/react/SniceProvider.js +1 -1
- package/dist/react/SniceRouter.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/matchRoute.js +1 -1
- package/dist/react/useRequestHandler.js +1 -1
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/components/avatar.md +8 -8
- package/docs/ai/components/breadcrumbs.md +2 -1
- package/docs/ai/components/button.md +2 -7
- package/docs/ai/components/calendar.md +1 -1
- package/docs/ai/components/camera.md +1 -1
- package/docs/ai/components/chart.md +3 -1
- package/docs/ai/components/code-block.md +2 -2
- package/docs/ai/components/date-picker.md +5 -19
- package/docs/ai/components/date-range-picker.md +4 -12
- package/docs/ai/components/draw.md +5 -5
- package/docs/ai/components/drawer.md +4 -4
- package/docs/ai/components/form-layout.md +2 -0
- package/docs/ai/components/icons.md +7 -16
- package/docs/ai/components/key-value.md +3 -22
- package/docs/ai/components/layout.md +8 -12
- package/docs/ai/components/leaderboard.md +2 -2
- package/docs/ai/components/link-preview.md +4 -3
- package/docs/ai/components/login.md +11 -0
- package/docs/ai/components/markdown.md +7 -0
- package/docs/ai/components/masonry.md +6 -0
- package/docs/ai/components/menu.md +1 -1
- package/docs/ai/components/modal.md +7 -0
- package/docs/ai/components/notification-center.md +5 -4
- package/docs/ai/components/radio.md +7 -0
- package/docs/ai/components/rating.md +3 -3
- package/docs/ai/components/select.md +4 -13
- package/docs/ai/components/spotlight.md +2 -0
- package/docs/ai/components/table.md +1 -4
- package/docs/ai/components/tag-input.md +6 -0
- package/docs/ai/components/terminal.md +6 -0
- package/docs/ai/components/tooltip.md +10 -16
- package/docs/ai/components/tree.md +2 -2
- package/docs/ai/components/video-player.md +5 -0
- package/docs/ai/components/waterfall.md +7 -0
- package/docs/ai/events.md +29 -0
- package/docs/components/breadcrumbs.md +2 -1
- package/docs/components/calendar.md +1 -1
- package/docs/components/camera.md +1 -1
- package/docs/components/chart.md +1 -1
- package/docs/components/code-block.md +13 -4
- package/docs/components/color-picker.md +6 -5
- package/docs/components/date-time-picker.md +14 -0
- package/docs/components/diff.md +2 -1
- package/docs/components/draw.md +5 -5
- package/docs/components/drawer.md +4 -4
- package/docs/components/input.md +1 -0
- package/docs/components/layout.md +20 -22
- package/docs/components/leaderboard.md +10 -3
- package/docs/components/link-preview.md +11 -9
- package/docs/components/login.md +4 -0
- package/docs/components/menu.md +1 -1
- package/docs/components/modal.md +1 -0
- package/docs/components/nav.md +1 -0
- package/docs/components/network-graph.md +1 -0
- package/docs/components/notification-center.md +2 -1
- package/docs/components/product-card.md +1 -0
- package/docs/components/qr-reader.md +1 -0
- package/docs/components/rating.md +4 -4
- package/docs/components/select.md +1 -0
- package/docs/components/spotlight.md +2 -0
- package/docs/components/tabs.md +1 -0
- package/docs/components/terminal.md +3 -0
- package/docs/components/textarea.md +1 -1
- package/docs/components/time-picker.md +14 -0
- package/docs/components/tooltip.md +2 -0
- package/docs/components/tree.md +2 -2
- package/docs/events.md +73 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snice-recipe.min.js","sources":["../../../node_modules/tslib/tslib.es6.mjs","../../components/recipe/snice-recipe.js"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { __runInitializers, __esDecorate } from 'tslib';\nimport { element, property, watch, dispose, dispatch, styles, render, css, html } from 'snice';\n\nvar cssContent = \":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);color:var(--snice-color-text,rgb(23 23 23));width:100%;--recipe-bg:var(--snice-color-surface-container-high, rgb(252 251 249));--recipe-border:var(--snice-color-border, rgb(226 226 226));--recipe-text:var(--snice-color-text, rgb(23 23 23));--recipe-text-secondary:var(--snice-color-text-secondary, rgb(82 82 82));--recipe-text-tertiary:var(--snice-color-text-tertiary, rgb(115 115 115));--recipe-primary:var(--snice-color-primary, rgb(37 99 235));--recipe-success:var(--snice-color-success, rgb(22 163 74));--recipe-danger:var(--snice-color-danger, rgb(220 38 38));--recipe-radius:var(--snice-border-radius-lg, 0.5rem);--recipe-shadow:var(--snice-shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1))}.recipe{background:var(--recipe-bg);border-radius:var(--recipe-radius);box-shadow:var(--recipe-shadow);overflow:hidden}.recipe__hero{position:relative;width:100%;overflow:hidden}.recipe__hero img{width:100%;height:auto;display:block;object-fit:cover;max-height:25rem}.recipe__header{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);padding:var(--snice-spacing-lg,1.5rem)}.recipe__title{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);margin:0 0 var(--snice-spacing-xs,.5rem);font-size:var(--snice-heading-xl, 1.5rem);font-weight:var(--snice-font-weight-bold,700);line-height:var(--snice-line-height-normal, 1.5);color:var(--recipe-text)}.recipe__description{margin:0 0 var(--snice-spacing-sm,.75rem);font-size:var(--snice-font-size-md, 1rem);color:var(--recipe-text-secondary);line-height:var(--snice-line-height-normal, 1.5)}.recipe__author{font-size:var(--snice-font-size-sm, .875rem);color:var(--recipe-text-tertiary)}.recipe__tags{display:flex;flex-wrap:wrap;gap:var(--snice-spacing-2xs,.25rem);margin-top:var(--snice-spacing-sm,.75rem)}.recipe__tag{display:inline-flex;align-items:center;padding:var(--snice-spacing-3xs,.125rem) var(--snice-spacing-xs,.5rem);font-size:var(--snice-font-size-xs, .75rem);border-radius:9999px;background:var(--snice-color-surface,rgb(255 255 255));border:1px solid var(--recipe-border);color:var(--recipe-text-secondary)}.recipe__meta{display:flex;flex-wrap:wrap;gap:var(--snice-spacing-md,1rem);padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,1.5rem);border-top:1px solid var(--recipe-border);border-bottom:1px solid var(--recipe-border);background:var(--snice-color-surface,rgb(255 255 255))}.recipe__meta-item{display:flex;flex-direction:column;align-items:center;gap:var(--snice-spacing-3xs,.125rem);min-width:4rem}.recipe__meta-label{font-size:var(--snice-font-size-xs, .75rem);color:var(--recipe-text-tertiary);text-transform:uppercase;letter-spacing:var(--snice-tracking-wide, .03em)}.recipe__meta-value{font-size:var(--snice-font-size-md, 1rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--recipe-text)}.recipe__difficulty--easy{color:var(--recipe-success)}.recipe__difficulty--medium{color:var(--snice-color-warning,rgb(234 179 8))}.recipe__difficulty--hard{color:var(--recipe-danger)}.recipe__content{display:grid;grid-template-columns:1fr 2fr;gap:var(--snice-spacing-lg,1.5rem);padding:var(--snice-spacing-lg,1.5rem)}@media (max-width:768px){.recipe__content{grid-template-columns:1fr}}.recipe__servings-adjuster{display:flex;align-items:center;gap:var(--snice-spacing-xs,.5rem);margin-bottom:var(--snice-spacing-md,1rem)}.recipe__servings-adjuster span{font-size:var(--snice-font-size-md, 1rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--recipe-text)}.recipe__servings-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:1px solid var(--recipe-border);border-radius:50%;background:var(--snice-color-surface,rgb(255 255 255));color:var(--recipe-text);font-size:var(--snice-font-size-lg, 1.125rem);cursor:pointer;transition:background var(--snice-transition-fast, 150ms),border-color var(--snice-transition-fast, 150ms);padding:0;line-height:1}.recipe__servings-btn:hover{border-color:var(--recipe-primary);background:var(--snice-color-primary-subtle,rgb(239 246 255))}.recipe__servings-btn:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:var(--snice-focus-ring-offset,2px)}.recipe__servings-count{min-width:2rem;text-align:center;font-weight:var(--snice-font-weight-bold,700);font-size:var(--snice-font-size-lg, 1.125rem)}.recipe__ingredients-section{position:relative}.recipe__section-title{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);font-size:var(--snice-heading-md, 1.125rem);font-weight:var(--snice-font-weight-semibold,600);margin:0 0 var(--snice-spacing-sm,.75rem);color:var(--recipe-text)}.recipe__ingredient-group-title{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);font-size:var(--snice-heading-sm, 1rem);font-weight:var(--snice-font-weight-medium,500);color:var(--recipe-text-secondary);margin:var(--snice-spacing-sm,.75rem) 0 var(--snice-spacing-2xs,.25rem)}.recipe__ingredients-list{list-style:none;padding:0;margin:0}.recipe__ingredient{display:flex;align-items:center;gap:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-xs,.5rem) 0;border-bottom:1px solid var(--recipe-border);cursor:pointer;transition:opacity var(--snice-transition-fast, 150ms)}.recipe__ingredient:last-child{border-bottom:none}.recipe__ingredient--checked{opacity:.5}.recipe__ingredient--checked .recipe__ingredient-text{text-decoration:line-through}.recipe__ingredient-checkbox{appearance:none;width:1.125rem;height:1.125rem;border:2px solid var(--recipe-border);border-radius:3px;cursor:pointer;flex-shrink:0;position:relative;transition:background var(--snice-transition-fast, 150ms),border-color var(--snice-transition-fast, 150ms)}.recipe__ingredient-checkbox:checked{background:var(--recipe-primary);border-color:var(--recipe-primary)}.recipe__ingredient-checkbox:checked::after{content:'';position:absolute;left:3px;top:0;width:.375rem;height:.625rem;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.recipe__ingredient-checkbox:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:var(--snice-focus-ring-offset,2px)}.recipe__ingredient-amount{font-weight:var(--snice-font-weight-semibold,600);white-space:nowrap;color:var(--recipe-text)}.recipe__ingredient-text{color:var(--recipe-text-secondary)}.recipe__steps-section{position:relative}.recipe__steps-list{list-style:none;padding:0;margin:0;counter-reset:step-counter}.recipe__step{display:flex;gap:var(--snice-spacing-md,1rem);padding:var(--snice-spacing-md,1rem) 0;border-bottom:1px solid var(--recipe-border);counter-increment:step-counter;transition:opacity var(--snice-transition-fast, 150ms)}.recipe__step:last-child{border-bottom:none}.recipe__step--completed{opacity:.5}.recipe__step--active{background:var(--snice-color-primary-subtle,rgb(239 246 255));margin:0 calc(-1 * var(--snice-spacing-sm,.75rem));padding-left:var(--snice-spacing-sm,.75rem);padding-right:var(--snice-spacing-sm,.75rem);border-radius:var(--snice-border-radius-md,.25rem)}.recipe__step-number{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;background:var(--recipe-primary);color:var(--snice-color-text-inverse,rgb(250 250 250));font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-bold,700);cursor:pointer;transition:background var(--snice-transition-fast, 150ms)}.recipe__step--completed .recipe__step-number{background:var(--recipe-success)}.recipe__step-number:hover{opacity:.8}.recipe__step-body{flex:1;min-width:0}.recipe__step-text{font-size:var(--snice-font-size-md, 1rem);line-height:var(--snice-line-height-normal, 1.5);color:var(--recipe-text)}.recipe__step-tip{margin-top:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);background:var(--snice-color-primary-subtle,rgb(239 246 255));border-left:3px solid var(--recipe-primary);border-radius:0 var(--snice-border-radius-md,.25rem) var(--snice-border-radius-md,.25rem) 0;font-size:var(--snice-font-size-sm, .875rem);color:var(--recipe-text-secondary)}.recipe__step-image{margin-top:var(--snice-spacing-xs,.5rem);width:100%;max-width:20rem;border-radius:var(--snice-border-radius-md,.25rem)}.recipe__step-timer-btn{display:inline-flex;align-items:center;gap:var(--snice-spacing-3xs,.125rem);margin-top:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-3xs,.125rem) var(--snice-spacing-xs,.5rem);border:1px solid var(--recipe-primary);border-radius:var(--snice-border-radius-md,.25rem);background:0 0;color:var(--recipe-primary);font-size:var(--snice-font-size-sm, .875rem);cursor:pointer;transition:background var(--snice-transition-fast, 150ms)}.recipe__step-timer-btn:hover{background:var(--snice-color-primary-subtle,rgb(239 246 255))}.recipe__step-timer-btn:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:var(--snice-focus-ring-offset,2px)}.recipe__step-timer-btn svg{width:.875rem;height:.875rem}.recipe__active-timer{display:inline-flex;align-items:center;gap:var(--snice-spacing-2xs,.25rem);margin-top:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-2xs,.25rem) var(--snice-spacing-xs,.5rem);background:var(--snice-color-primary-subtle,rgb(239 246 255));border-radius:var(--snice-border-radius-md,.25rem);font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--recipe-primary)}.recipe__active-timer--done{background:var(--snice-color-success-subtle,rgb(220 252 231));color:var(--recipe-success)}.recipe__timer-cancel{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border:none;border-radius:50%;background:0 0;color:inherit;cursor:pointer;padding:0;font-size:.75rem}.recipe__timer-cancel:hover{background:rgb(0 0 0 / .1)}.recipe__nutrition{padding:var(--snice-spacing-lg,1.5rem);border-top:1px solid var(--recipe-border)}.recipe__nutrition-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(6rem,1fr));gap:var(--snice-spacing-md,1rem);margin-top:var(--snice-spacing-sm,.75rem)}.recipe__nutrition-item{text-align:center;padding:var(--snice-spacing-sm,.75rem);background:var(--snice-color-surface,rgb(255 255 255));border-radius:var(--snice-border-radius-md,.25rem);border:1px solid var(--recipe-border)}.recipe__nutrition-value{font-size:var(--snice-font-size-lg, 1.125rem);font-weight:var(--snice-font-weight-bold,700);color:var(--recipe-text)}.recipe__nutrition-label{font-size:var(--snice-font-size-xs, .75rem);color:var(--recipe-text-tertiary);margin-top:var(--snice-spacing-3xs,.125rem)}.recipe__step-controls{display:flex;gap:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-sm,.75rem) var(--snice-spacing-lg,1.5rem);border-top:1px solid var(--recipe-border)}.recipe__step-controls button{padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-md,1rem);border:1px solid var(--recipe-border);border-radius:var(--snice-border-radius-md,.25rem);background:var(--snice-color-surface,rgb(255 255 255));color:var(--recipe-text);font-size:var(--snice-font-size-sm, .875rem);cursor:pointer;transition:background var(--snice-transition-fast, 150ms),border-color var(--snice-transition-fast, 150ms)}.recipe__step-controls button:hover{border-color:var(--recipe-primary);background:var(--snice-color-primary-subtle,rgb(239 246 255))}.recipe__step-controls button:disabled{opacity:.4;cursor:not-allowed}.recipe__step-controls button:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:var(--snice-focus-ring-offset,2px)}.recipe__print-btn{margin-left:auto}:host([variant=card]) .recipe__content{grid-template-columns:1fr;padding:var(--snice-spacing-md,1rem)}:host([variant=card]) .recipe__hero img{max-height:15rem}:host([variant=card]) .recipe__header{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);padding:var(--snice-spacing-md,1rem)}@media print{.recipe{box-shadow:none;border:1px solid #ccc}.recipe__active-timer,.recipe__servings-btn,.recipe__step-controls,.recipe__step-timer-btn,.recipe__timer-cancel{display:none!important}.recipe__ingredient--checked,.recipe__step--completed{opacity:1}.recipe__ingredient--checked .recipe__ingredient-text{text-decoration:none}}[hidden]{display:none!important}@media (prefers-reduced-motion:reduce){*{transition-duration:0s!important;animation-duration:0s!important}}\";\n\nlet SniceRecipe = (() => {\n let _classDecorators = [element('snice-recipe')];\n let _classDescriptor;\n let _classExtraInitializers = [];\n let _classThis;\n let _classSuper = HTMLElement;\n let _instanceExtraInitializers = [];\n let _title_decorators;\n let _title_initializers = [];\n let _title_extraInitializers = [];\n let _description_decorators;\n let _description_initializers = [];\n let _description_extraInitializers = [];\n let _image_decorators;\n let _image_initializers = [];\n let _image_extraInitializers = [];\n let _author_decorators;\n let _author_initializers = [];\n let _author_extraInitializers = [];\n let _prepTime_decorators;\n let _prepTime_initializers = [];\n let _prepTime_extraInitializers = [];\n let _cookTime_decorators;\n let _cookTime_initializers = [];\n let _cookTime_extraInitializers = [];\n let _servings_decorators;\n let _servings_initializers = [];\n let _servings_extraInitializers = [];\n let _difficulty_decorators;\n let _difficulty_initializers = [];\n let _difficulty_extraInitializers = [];\n let _cuisine_decorators;\n let _cuisine_initializers = [];\n let _cuisine_extraInitializers = [];\n let _variant_decorators;\n let _variant_initializers = [];\n let _variant_extraInitializers = [];\n let _ingredients_decorators;\n let _ingredients_initializers = [];\n let _ingredients_extraInitializers = [];\n let _steps_decorators;\n let _steps_initializers = [];\n let _steps_extraInitializers = [];\n let _nutrition_decorators;\n let _nutrition_initializers = [];\n let _nutrition_extraInitializers = [];\n let _tags_decorators;\n let _tags_initializers = [];\n let _tags_extraInitializers = [];\n let _currentServings_decorators;\n let _currentServings_initializers = [];\n let _currentServings_extraInitializers = [];\n let _checkedIngredients_decorators;\n let _checkedIngredients_initializers = [];\n let _checkedIngredients_extraInitializers = [];\n let _completedSteps_decorators;\n let _completedSteps_initializers = [];\n let _completedSteps_extraInitializers = [];\n let _activeStep_decorators;\n let _activeStep_initializers = [];\n let _activeStep_extraInitializers = [];\n let _timerVersion_decorators;\n let _timerVersion_initializers = [];\n let _timerVersion_extraInitializers = [];\n let _onServingsChange_decorators;\n let _onIngredientsChange_decorators;\n let _onStepsChange_decorators;\n let _cleanup_decorators;\n let _emitServingChange_decorators;\n let _emitStepComplete_decorators;\n let _emitIngredientCheck_decorators;\n let _styles_decorators;\n let _template_decorators;\n (class extends _classSuper {\n static { _classThis = this; }\n constructor() {\n super(...arguments);\n this.title = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _title_initializers, ''));\n this.description = (__runInitializers(this, _title_extraInitializers), __runInitializers(this, _description_initializers, ''));\n this.image = (__runInitializers(this, _description_extraInitializers), __runInitializers(this, _image_initializers, ''));\n this.author = (__runInitializers(this, _image_extraInitializers), __runInitializers(this, _author_initializers, ''));\n this.prepTime = (__runInitializers(this, _author_extraInitializers), __runInitializers(this, _prepTime_initializers, 0));\n this.cookTime = (__runInitializers(this, _prepTime_extraInitializers), __runInitializers(this, _cookTime_initializers, 0));\n this.servings = (__runInitializers(this, _cookTime_extraInitializers), __runInitializers(this, _servings_initializers, 4));\n this.difficulty = (__runInitializers(this, _servings_extraInitializers), __runInitializers(this, _difficulty_initializers, 'medium'));\n this.cuisine = (__runInitializers(this, _difficulty_extraInitializers), __runInitializers(this, _cuisine_initializers, ''));\n this.variant = (__runInitializers(this, _cuisine_extraInitializers), __runInitializers(this, _variant_initializers, 'full'));\n this.ingredients = (__runInitializers(this, _variant_extraInitializers), __runInitializers(this, _ingredients_initializers, []));\n this.steps = (__runInitializers(this, _ingredients_extraInitializers), __runInitializers(this, _steps_initializers, []));\n this.nutrition = (__runInitializers(this, _steps_extraInitializers), __runInitializers(this, _nutrition_initializers, null));\n this.tags = (__runInitializers(this, _nutrition_extraInitializers), __runInitializers(this, _tags_initializers, []));\n // Internal state\n this.currentServings = (__runInitializers(this, _tags_extraInitializers), __runInitializers(this, _currentServings_initializers, 0));\n this.checkedIngredients = (__runInitializers(this, _currentServings_extraInitializers), __runInitializers(this, _checkedIngredients_initializers, []));\n this.completedSteps = (__runInitializers(this, _checkedIngredients_extraInitializers), __runInitializers(this, _completedSteps_initializers, []));\n this.activeStep = (__runInitializers(this, _completedSteps_extraInitializers), __runInitializers(this, _activeStep_initializers, -1));\n this.timerVersion = (__runInitializers(this, _activeStep_extraInitializers), __runInitializers(this, _timerVersion_initializers, 0));\n this.activeTimers = (__runInitializers(this, _timerVersion_extraInitializers), new Map());\n this.baseServings = 0;\n }\n static {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;\n _title_decorators = [property()];\n _description_decorators = [property()];\n _image_decorators = [property()];\n _author_decorators = [property()];\n _prepTime_decorators = [property({ type: Number, attribute: 'prep-time' })];\n _cookTime_decorators = [property({ type: Number, attribute: 'cook-time' })];\n _servings_decorators = [property({ type: Number })];\n _difficulty_decorators = [property()];\n _cuisine_decorators = [property()];\n _variant_decorators = [property()];\n _ingredients_decorators = [property({ type: Array, attribute: false })];\n _steps_decorators = [property({ type: Array, attribute: false })];\n _nutrition_decorators = [property({ type: Object, attribute: false })];\n _tags_decorators = [property({ type: Array, attribute: false })];\n _currentServings_decorators = [property({ type: Number })];\n _checkedIngredients_decorators = [property({ type: Array })];\n _completedSteps_decorators = [property({ type: Array })];\n _activeStep_decorators = [property({ type: Number })];\n _timerVersion_decorators = [property({ type: Number })];\n _onServingsChange_decorators = [watch('servings')];\n _onIngredientsChange_decorators = [watch('ingredients')];\n _onStepsChange_decorators = [watch('steps')];\n _cleanup_decorators = [dispose()];\n _emitServingChange_decorators = [dispatch('recipe-serving-change', { bubbles: true, composed: true })];\n _emitStepComplete_decorators = [dispatch('recipe-step-complete', { bubbles: true, composed: true })];\n _emitIngredientCheck_decorators = [dispatch('recipe-ingredient-check', { bubbles: true, composed: true })];\n _styles_decorators = [styles()];\n _template_decorators = [render()];\n __esDecorate(this, null, _onServingsChange_decorators, { kind: \"method\", name: \"onServingsChange\", static: false, private: false, access: { has: obj => \"onServingsChange\" in obj, get: obj => obj.onServingsChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _onIngredientsChange_decorators, { kind: \"method\", name: \"onIngredientsChange\", static: false, private: false, access: { has: obj => \"onIngredientsChange\" in obj, get: obj => obj.onIngredientsChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _onStepsChange_decorators, { kind: \"method\", name: \"onStepsChange\", static: false, private: false, access: { has: obj => \"onStepsChange\" in obj, get: obj => obj.onStepsChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _cleanup_decorators, { kind: \"method\", name: \"cleanup\", static: false, private: false, access: { has: obj => \"cleanup\" in obj, get: obj => obj.cleanup }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _emitServingChange_decorators, { kind: \"method\", name: \"emitServingChange\", static: false, private: false, access: { has: obj => \"emitServingChange\" in obj, get: obj => obj.emitServingChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _emitStepComplete_decorators, { kind: \"method\", name: \"emitStepComplete\", static: false, private: false, access: { has: obj => \"emitStepComplete\" in obj, get: obj => obj.emitStepComplete }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _emitIngredientCheck_decorators, { kind: \"method\", name: \"emitIngredientCheck\", static: false, private: false, access: { has: obj => \"emitIngredientCheck\" in obj, get: obj => obj.emitIngredientCheck }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _styles_decorators, { kind: \"method\", name: \"styles\", static: false, private: false, access: { has: obj => \"styles\" in obj, get: obj => obj.styles }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _template_decorators, { kind: \"method\", name: \"template\", static: false, private: false, access: { has: obj => \"template\" in obj, get: obj => obj.template }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(null, null, _title_decorators, { kind: \"field\", name: \"title\", static: false, private: false, access: { has: obj => \"title\" in obj, get: obj => obj.title, set: (obj, value) => { obj.title = value; } }, metadata: _metadata }, _title_initializers, _title_extraInitializers);\n __esDecorate(null, null, _description_decorators, { kind: \"field\", name: \"description\", static: false, private: false, access: { has: obj => \"description\" in obj, get: obj => obj.description, set: (obj, value) => { obj.description = value; } }, metadata: _metadata }, _description_initializers, _description_extraInitializers);\n __esDecorate(null, null, _image_decorators, { kind: \"field\", name: \"image\", static: false, private: false, access: { has: obj => \"image\" in obj, get: obj => obj.image, set: (obj, value) => { obj.image = value; } }, metadata: _metadata }, _image_initializers, _image_extraInitializers);\n __esDecorate(null, null, _author_decorators, { kind: \"field\", name: \"author\", static: false, private: false, access: { has: obj => \"author\" in obj, get: obj => obj.author, set: (obj, value) => { obj.author = value; } }, metadata: _metadata }, _author_initializers, _author_extraInitializers);\n __esDecorate(null, null, _prepTime_decorators, { kind: \"field\", name: \"prepTime\", static: false, private: false, access: { has: obj => \"prepTime\" in obj, get: obj => obj.prepTime, set: (obj, value) => { obj.prepTime = value; } }, metadata: _metadata }, _prepTime_initializers, _prepTime_extraInitializers);\n __esDecorate(null, null, _cookTime_decorators, { kind: \"field\", name: \"cookTime\", static: false, private: false, access: { has: obj => \"cookTime\" in obj, get: obj => obj.cookTime, set: (obj, value) => { obj.cookTime = value; } }, metadata: _metadata }, _cookTime_initializers, _cookTime_extraInitializers);\n __esDecorate(null, null, _servings_decorators, { kind: \"field\", name: \"servings\", static: false, private: false, access: { has: obj => \"servings\" in obj, get: obj => obj.servings, set: (obj, value) => { obj.servings = value; } }, metadata: _metadata }, _servings_initializers, _servings_extraInitializers);\n __esDecorate(null, null, _difficulty_decorators, { kind: \"field\", name: \"difficulty\", static: false, private: false, access: { has: obj => \"difficulty\" in obj, get: obj => obj.difficulty, set: (obj, value) => { obj.difficulty = value; } }, metadata: _metadata }, _difficulty_initializers, _difficulty_extraInitializers);\n __esDecorate(null, null, _cuisine_decorators, { kind: \"field\", name: \"cuisine\", static: false, private: false, access: { has: obj => \"cuisine\" in obj, get: obj => obj.cuisine, set: (obj, value) => { obj.cuisine = value; } }, metadata: _metadata }, _cuisine_initializers, _cuisine_extraInitializers);\n __esDecorate(null, null, _variant_decorators, { kind: \"field\", name: \"variant\", static: false, private: false, access: { has: obj => \"variant\" in obj, get: obj => obj.variant, set: (obj, value) => { obj.variant = value; } }, metadata: _metadata }, _variant_initializers, _variant_extraInitializers);\n __esDecorate(null, null, _ingredients_decorators, { kind: \"field\", name: \"ingredients\", static: false, private: false, access: { has: obj => \"ingredients\" in obj, get: obj => obj.ingredients, set: (obj, value) => { obj.ingredients = value; } }, metadata: _metadata }, _ingredients_initializers, _ingredients_extraInitializers);\n __esDecorate(null, null, _steps_decorators, { kind: \"field\", name: \"steps\", static: false, private: false, access: { has: obj => \"steps\" in obj, get: obj => obj.steps, set: (obj, value) => { obj.steps = value; } }, metadata: _metadata }, _steps_initializers, _steps_extraInitializers);\n __esDecorate(null, null, _nutrition_decorators, { kind: \"field\", name: \"nutrition\", static: false, private: false, access: { has: obj => \"nutrition\" in obj, get: obj => obj.nutrition, set: (obj, value) => { obj.nutrition = value; } }, metadata: _metadata }, _nutrition_initializers, _nutrition_extraInitializers);\n __esDecorate(null, null, _tags_decorators, { kind: \"field\", name: \"tags\", static: false, private: false, access: { has: obj => \"tags\" in obj, get: obj => obj.tags, set: (obj, value) => { obj.tags = value; } }, metadata: _metadata }, _tags_initializers, _tags_extraInitializers);\n __esDecorate(null, null, _currentServings_decorators, { kind: \"field\", name: \"currentServings\", static: false, private: false, access: { has: obj => \"currentServings\" in obj, get: obj => obj.currentServings, set: (obj, value) => { obj.currentServings = value; } }, metadata: _metadata }, _currentServings_initializers, _currentServings_extraInitializers);\n __esDecorate(null, null, _checkedIngredients_decorators, { kind: \"field\", name: \"checkedIngredients\", static: false, private: false, access: { has: obj => \"checkedIngredients\" in obj, get: obj => obj.checkedIngredients, set: (obj, value) => { obj.checkedIngredients = value; } }, metadata: _metadata }, _checkedIngredients_initializers, _checkedIngredients_extraInitializers);\n __esDecorate(null, null, _completedSteps_decorators, { kind: \"field\", name: \"completedSteps\", static: false, private: false, access: { has: obj => \"completedSteps\" in obj, get: obj => obj.completedSteps, set: (obj, value) => { obj.completedSteps = value; } }, metadata: _metadata }, _completedSteps_initializers, _completedSteps_extraInitializers);\n __esDecorate(null, null, _activeStep_decorators, { kind: \"field\", name: \"activeStep\", static: false, private: false, access: { has: obj => \"activeStep\" in obj, get: obj => obj.activeStep, set: (obj, value) => { obj.activeStep = value; } }, metadata: _metadata }, _activeStep_initializers, _activeStep_extraInitializers);\n __esDecorate(null, null, _timerVersion_decorators, { kind: \"field\", name: \"timerVersion\", static: false, private: false, access: { has: obj => \"timerVersion\" in obj, get: obj => obj.timerVersion, set: (obj, value) => { obj.timerVersion = value; } }, metadata: _metadata }, _timerVersion_initializers, _timerVersion_extraInitializers);\n __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: \"class\", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);\n _classThis = _classDescriptor.value;\n if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n __runInitializers(_classThis, _classExtraInitializers);\n }\n onServingsChange() {\n if (this.baseServings === 0) {\n this.baseServings = this.servings;\n this.currentServings = this.servings;\n }\n }\n onIngredientsChange() {\n this.checkedIngredients = new Array(this.ingredients.length).fill(false);\n }\n onStepsChange() {\n this.completedSteps = new Array(this.steps.length).fill(false);\n this.activeStep = -1;\n }\n setServings(count) {\n if (count < 1)\n return;\n const previous = this.currentServings;\n this.currentServings = count;\n this.emitServingChange(previous);\n }\n print() {\n window.print();\n }\n reset() {\n this.checkedIngredients = new Array(this.ingredients.length).fill(false);\n this.completedSteps = new Array(this.steps.length).fill(false);\n this.activeStep = -1;\n this.currentServings = this.baseServings || this.servings;\n // Clear all active timers\n for (const [, timer] of this.activeTimers.entries()) {\n clearInterval(timer.intervalId);\n }\n this.activeTimers.clear();\n this.timerVersion++;\n }\n scaleAmount(amount) {\n const base = this.baseServings || this.servings;\n if (base === 0)\n return amount;\n const scaled = (amount * this.currentServings) / base;\n return Math.round(scaled * 100) / 100;\n }\n formatAmount(amount) {\n const scaled = this.scaleAmount(amount);\n if (scaled === Math.floor(scaled))\n return scaled.toString();\n // Common fractions\n const frac = scaled - Math.floor(scaled);\n const whole = Math.floor(scaled);\n const fractionMap = [\n [0.25, '\\u00BC'], [0.33, '\\u2153'], [0.5, '\\u00BD'],\n [0.67, '\\u2154'], [0.75, '\\u00BE'],\n ];\n for (const [val, sym] of fractionMap) {\n if (Math.abs(frac - val) < 0.05) {\n return whole > 0 ? `${whole}${sym}` : sym;\n }\n }\n return scaled.toFixed(1);\n }\n toggleIngredient(index) {\n const updated = [...this.checkedIngredients];\n updated[index] = !updated[index];\n this.checkedIngredients = updated;\n this.emitIngredientCheck(index, updated[index]);\n }\n toggleStepComplete(index) {\n const updated = [...this.completedSteps];\n updated[index] = !updated[index];\n this.completedSteps = updated;\n this.emitStepComplete(index, updated[index]);\n }\n decrementServings() {\n if (this.currentServings > 1) {\n this.setServings(this.currentServings - 1);\n }\n }\n incrementServings() {\n this.setServings(this.currentServings + 1);\n }\n goToPrevStep() {\n if (this.activeStep > 0) {\n this.activeStep = this.activeStep - 1;\n }\n }\n goToNextStep() {\n if (this.activeStep < this.steps.length - 1) {\n this.activeStep = this.activeStep + 1;\n }\n else {\n this.activeStep = -1;\n }\n }\n startStepByStep() {\n this.activeStep = 0;\n }\n startTimer(stepIndex, minutes) {\n if (this.activeTimers.has(stepIndex))\n return;\n const remaining = minutes * 60;\n const intervalId = window.setInterval(() => {\n const timer = this.activeTimers.get(stepIndex);\n if (!timer)\n return;\n if (timer.remaining <= 1) {\n clearInterval(timer.intervalId);\n this.activeTimers.set(stepIndex, { ...timer, remaining: 0, done: true });\n this.timerVersion++;\n return;\n }\n this.activeTimers.set(stepIndex, { ...timer, remaining: timer.remaining - 1 });\n this.timerVersion++;\n }, 1000);\n this.activeTimers.set(stepIndex, { remaining, intervalId, done: false });\n this.timerVersion++;\n }\n cleanup() {\n for (const [, timer] of this.activeTimers.entries()) {\n clearInterval(timer.intervalId);\n }\n this.activeTimers.clear();\n }\n cancelTimer(stepIndex) {\n const timer = this.activeTimers.get(stepIndex);\n if (timer) {\n clearInterval(timer.intervalId);\n this.activeTimers.delete(stepIndex);\n this.timerVersion++;\n }\n }\n formatTimer(seconds) {\n const m = Math.floor(seconds / 60);\n const s = seconds % 60;\n return `${m}:${s.toString().padStart(2, '0')}`;\n }\n formatMinutes(minutes) {\n if (minutes < 60)\n return `${minutes} min`;\n const hrs = Math.floor(minutes / 60);\n const mins = minutes % 60;\n return mins > 0 ? `${hrs}h ${mins}m` : `${hrs}h`;\n }\n emitServingChange(previousServings) {\n return { servings: this.currentServings, previousServings };\n }\n emitStepComplete(stepIndex, completed) {\n return { stepIndex, completed };\n }\n emitIngredientCheck(ingredientIndex, checked) {\n return { ingredientIndex, checked, ingredient: this.ingredients[ingredientIndex] };\n }\n styles() {\n return css /*css*/ `${cssContent}`;\n }\n template() {\n // Initialize base servings on first render\n if (this.baseServings === 0 && this.servings > 0) {\n this.baseServings = this.servings;\n this.currentServings = this.servings;\n }\n const totalTime = this.prepTime + this.cookTime;\n // Group ingredients\n const groups = new Map();\n this.ingredients.forEach((ing, i) => {\n const group = ing.group || '';\n if (!groups.has(group))\n groups.set(group, []);\n groups.get(group).push({ ingredient: ing, index: i });\n });\n const hasStepByStep = this.activeStep >= 0;\n const hasTags = this.tags.length > 0 || this.cuisine.length > 0;\n const hasCuisine = this.cuisine.length > 0;\n const hasIngredients = this.ingredients.length > 0;\n const hasSteps = this.steps.length > 0;\n const hasContent = hasIngredients || hasSteps;\n const hasMeta = this.prepTime > 0 || this.cookTime > 0 || this.servings > 0 || this.difficulty.length > 0;\n // Pre-compute nutrition values to avoid null access in template\n const hasNutrition = this.nutrition !== null;\n const nutritionCalories = hasNutrition ? this.nutrition.calories : 0;\n const nutritionProtein = hasNutrition ? this.nutrition.protein : 0;\n const nutritionCarbs = hasNutrition ? this.nutrition.carbs : 0;\n const nutritionFat = hasNutrition ? this.nutrition.fat : 0;\n const nutritionFiber = hasNutrition ? this.nutrition.fiber : 0;\n const nutritionSodium = hasNutrition ? this.nutrition.sodium : 0;\n const hasFiber = hasNutrition && this.nutrition.fiber !== undefined;\n const hasSodium = hasNutrition && this.nutrition.sodium !== undefined;\n // Pre-build ingredient items to avoid nested template issues\n const ingredientItems = [];\n for (const [groupName, items] of groups.entries()) {\n if (groupName) {\n ingredientItems.push(html `<li class=\"recipe__ingredient-group-title\">${groupName}</li>`);\n }\n for (const { ingredient, index } of items) {\n const isChecked = this.checkedIngredients[index] || false;\n const checkedClass = isChecked ? 'recipe__ingredient--checked' : '';\n ingredientItems.push(html `\n <li class=\"recipe__ingredient ${checkedClass}\" @click=${() => this.toggleIngredient(index)}>\n <input type=\"checkbox\" class=\"recipe__ingredient-checkbox\" ?checked=${isChecked} @click=${(e) => e.stopPropagation()} @change=${() => this.toggleIngredient(index)} />\n <span class=\"recipe__ingredient-amount\">${this.formatAmount(ingredient.amount)} ${ingredient.unit}</span>\n <span class=\"recipe__ingredient-text\">${ingredient.name}</span>\n </li>\n `);\n }\n }\n return html /*html*/ `\n <div class=\"recipe\" part=\"container\">\n <if ${this.image}>\n <div class=\"recipe__hero\" part=\"hero\">\n <img src=\"${this.image}\" alt=\"${this.title}\" loading=\"lazy\" />\n </div>\n </if>\n\n <div class=\"recipe__header\" part=\"header\">\n <h2 class=\"recipe__title\">${this.title}</h2>\n <if ${this.description}>\n <p class=\"recipe__description\">${this.description}</p>\n </if>\n <if ${this.author}>\n <span class=\"recipe__author\">By ${this.author}</span>\n </if>\n <if ${hasTags}>\n <div class=\"recipe__tags\">\n <if ${hasCuisine}>\n <span class=\"recipe__tag\">${this.cuisine}</span>\n </if>\n ${this.tags.map(tag => html `<span class=\"recipe__tag\">${tag}</span>`)}\n </div>\n </if>\n </div>\n\n <if ${hasMeta}>\n <div class=\"recipe__meta\" part=\"meta\">\n <if ${this.prepTime > 0}>\n <div class=\"recipe__meta-item\">\n <span class=\"recipe__meta-label\">Prep</span>\n <span class=\"recipe__meta-value\">${this.formatMinutes(this.prepTime)}</span>\n </div>\n </if>\n <if ${this.cookTime > 0}>\n <div class=\"recipe__meta-item\">\n <span class=\"recipe__meta-label\">Cook</span>\n <span class=\"recipe__meta-value\">${this.formatMinutes(this.cookTime)}</span>\n </div>\n </if>\n <if ${totalTime > 0}>\n <div class=\"recipe__meta-item\">\n <span class=\"recipe__meta-label\">Total</span>\n <span class=\"recipe__meta-value\">${this.formatMinutes(totalTime)}</span>\n </div>\n </if>\n <if ${this.currentServings > 0}>\n <div class=\"recipe__meta-item\">\n <span class=\"recipe__meta-label\">Servings</span>\n <span class=\"recipe__meta-value\">${this.currentServings}</span>\n </div>\n </if>\n <if ${this.difficulty}>\n <div class=\"recipe__meta-item\">\n <span class=\"recipe__meta-label\">Difficulty</span>\n <span class=\"recipe__meta-value recipe__difficulty--${this.difficulty}\">${this.difficulty}</span>\n </div>\n </if>\n </div>\n </if>\n\n <if ${hasContent}>\n <div class=\"recipe__content\" part=\"content\">\n <if ${hasIngredients}>\n <div class=\"recipe__ingredients-section\" part=\"ingredients\">\n <h3 class=\"recipe__section-title\">Ingredients</h3>\n <div class=\"recipe__servings-adjuster\">\n <button class=\"recipe__servings-btn\" @click=${() => this.decrementServings()} aria-label=\"Decrease servings\">-</button>\n <span class=\"recipe__servings-count\">${this.currentServings}</span>\n <button class=\"recipe__servings-btn\" @click=${() => this.incrementServings()} aria-label=\"Increase servings\">+</button>\n <span>servings</span>\n </div>\n <ul class=\"recipe__ingredients-list\">\n ${ingredientItems}\n </ul>\n </div>\n </if>\n\n <if ${hasSteps}>\n <div class=\"recipe__steps-section\" part=\"steps\">\n <h3 class=\"recipe__section-title\">Instructions</h3>\n <ol class=\"recipe__steps-list\">\n ${this.steps.map((step, i) => {\n const isCompleted = this.completedSteps[i] || false;\n const isActive = this.activeStep === i;\n const timer = this.activeTimers.get(i);\n const hasTimer = timer !== undefined;\n const timerDone = hasTimer && timer.done;\n const timerClass = timerDone ? 'recipe__active-timer--done' : '';\n const timerText = hasTimer ? (timer.done ? 'Done!' : this.formatTimer(timer.remaining)) : '';\n const showTimerBtn = step.time && !hasTimer;\n return html `\n <li class=\"recipe__step ${isCompleted ? 'recipe__step--completed' : ''} ${isActive ? 'recipe__step--active' : ''}\">\n <span class=\"recipe__step-number\" @click=${() => this.toggleStepComplete(i)} title=\"${isCompleted ? 'Mark incomplete' : 'Mark complete'}\">\n ${isCompleted ? '\\u2713' : i + 1}\n </span>\n <div class=\"recipe__step-body\">\n <div class=\"recipe__step-text\">${step.text}</div>\n <if ${step.tip}>\n <div class=\"recipe__step-tip\">${step.tip}</div>\n </if>\n <if ${step.image}>\n <img class=\"recipe__step-image\" src=\"${step.image}\" alt=\"Step ${i + 1}\" loading=\"lazy\" />\n </if>\n <if ${showTimerBtn}>\n <button class=\"recipe__step-timer-btn\" @click=${() => this.startTimer(i, step.time)}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"/><polyline points=\"12 6 12 12 16 14\"/>\n </svg>\n ${this.formatMinutes(step.time)}\n </button>\n </if>\n <if ${hasTimer}>\n <span class=\"recipe__active-timer ${timerClass}\">\n ${timerText}\n <button class=\"recipe__timer-cancel\" @click=${() => this.cancelTimer(i)} title=\"Cancel timer\">\\u2715</button>\n </span>\n </if>\n </div>\n </li>\n `;\n })}\n </ol>\n </div>\n </if>\n </div>\n </if>\n\n <if ${hasNutrition}>\n <div class=\"recipe__nutrition\" part=\"nutrition\">\n <h3 class=\"recipe__section-title\">Nutrition Facts</h3>\n <span class=\"recipe__author\">Per serving</span>\n <div class=\"recipe__nutrition-grid\">\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionCalories}</div>\n <div class=\"recipe__nutrition-label\">Calories</div>\n </div>\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionProtein}g</div>\n <div class=\"recipe__nutrition-label\">Protein</div>\n </div>\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionCarbs}g</div>\n <div class=\"recipe__nutrition-label\">Carbs</div>\n </div>\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionFat}g</div>\n <div class=\"recipe__nutrition-label\">Fat</div>\n </div>\n <if ${hasFiber}>\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionFiber}g</div>\n <div class=\"recipe__nutrition-label\">Fiber</div>\n </div>\n </if>\n <if ${hasSodium}>\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionSodium}mg</div>\n <div class=\"recipe__nutrition-label\">Sodium</div>\n </div>\n </if>\n </div>\n </div>\n </if>\n\n <if ${hasSteps}>\n <div class=\"recipe__step-controls\" part=\"controls\">\n <if ${!hasStepByStep}>\n <button @click=${() => this.startStepByStep()}>Step-by-Step</button>\n </if>\n <if ${hasStepByStep}>\n <button @click=${() => this.goToPrevStep()} ?disabled=${this.activeStep <= 0}>Previous</button>\n <button @click=${() => this.goToNextStep()}>\n ${this.activeStep >= this.steps.length - 1 ? 'Finish' : 'Next'}\n </button>\n </if>\n <button class=\"recipe__print-btn\" @click=${() => this.print()}>Print</button>\n <button @click=${() => this.reset()}>Reset</button>\n </div>\n </if>\n </div>\n `;\n }\n });\n return _classThis;\n})();\n\nexport { SniceRecipe };\n//# sourceMappingURL=snice-recipe.js.map\n"],"names":["__esDecorate","ctor","descriptorIn","decorators","contextIn","initializers","extraInitializers","accept","f","TypeError","_","kind","key","target","prototype","descriptor","Object","getOwnPropertyDescriptor","name","done","i","length","context","p","access","addInitializer","push","result","get","set","init","unshift","defineProperty","__runInitializers","thisArg","value","useValue","arguments","call","SuppressedError","SniceRecipe","_classDescriptor","_classThis","_title_decorators","_description_decorators","_image_decorators","_author_decorators","_prepTime_decorators","_cookTime_decorators","_servings_decorators","_difficulty_decorators","_cuisine_decorators","_variant_decorators","_ingredients_decorators","_steps_decorators","_nutrition_decorators","_tags_decorators","_currentServings_decorators","_checkedIngredients_decorators","_completedSteps_decorators","_activeStep_decorators","_timerVersion_decorators","_onServingsChange_decorators","_onIngredientsChange_decorators","_onStepsChange_decorators","_cleanup_decorators","_emitServingChange_decorators","_emitStepComplete_decorators","_emitIngredientCheck_decorators","_styles_decorators","_template_decorators","_classDecorators","element","_classExtraInitializers","_classSuper","HTMLElement","_instanceExtraInitializers","_title_initializers","_title_extraInitializers","_description_initializers","_description_extraInitializers","_image_initializers","_image_extraInitializers","_author_initializers","_author_extraInitializers","_prepTime_initializers","_prepTime_extraInitializers","_cookTime_initializers","_cookTime_extraInitializers","_servings_initializers","_servings_extraInitializers","_difficulty_initializers","_difficulty_extraInitializers","_cuisine_initializers","_cuisine_extraInitializers","_variant_initializers","_variant_extraInitializers","_ingredients_initializers","_ingredients_extraInitializers","_steps_initializers","_steps_extraInitializers","_nutrition_initializers","_nutrition_extraInitializers","_tags_initializers","_tags_extraInitializers","_currentServings_initializers","_currentServings_extraInitializers","_checkedIngredients_initializers","_checkedIngredients_extraInitializers","_completedSteps_initializers","_completedSteps_extraInitializers","_activeStep_initializers","_activeStep_extraInitializers","_timerVersion_initializers","_timerVersion_extraInitializers","this","constructor","super","title","description","image","author","prepTime","cookTime","servings","difficulty","cuisine","variant","ingredients","steps","nutrition","tags","currentServings","checkedIngredients","completedSteps","activeStep","timerVersion","activeTimers","Map","baseServings","_metadata","Symbol","metadata","create","property","type","Number","attribute","Array","watch","dispose","dispatch","bubbles","composed","styles","render","static","private","has","obj","onServingsChange","onIngredientsChange","onStepsChange","cleanup","emitServingChange","emitStepComplete","emitIngredientCheck","template","enumerable","configurable","writable","fill","setServings","count","previous","print","window","reset","timer","entries","clearInterval","intervalId","clear","scaleAmount","amount","base","Math","round","formatAmount","scaled","floor","toString","frac","whole","fractionMap","val","sym","abs","toFixed","toggleIngredient","index","updated","toggleStepComplete","decrementServings","incrementServings","goToPrevStep","goToNextStep","startStepByStep","startTimer","stepIndex","minutes","remaining","setInterval","cancelTimer","delete","formatTimer","seconds","padStart","formatMinutes","hrs","mins","previousServings","completed","ingredientIndex","checked","ingredient","css","totalTime","groups","forEach","ing","group","hasStepByStep","hasTags","hasCuisine","hasIngredients","hasSteps","hasContent","hasMeta","hasNutrition","nutritionCalories","calories","nutritionProtein","protein","nutritionCarbs","carbs","nutritionFat","fat","nutritionFiber","fiber","nutritionSodium","sodium","hasFiber","undefined","hasSodium","ingredientItems","groupName","items","html","isChecked","e","stopPropagation","unit","map","tag","step","isCompleted","isActive","hasTimer","timerClass","timerText","text","tip","time"],"mappings":"6JAiEO,SAASA,EAAaC,EAAMC,EAAcC,EAAYC,EAAWC,EAAcC,GACpF,SAASC,EAAOC,GAAK,QAAU,IAANA,GAA6B,mBAANA,EAAkB,MAAM,IAAIC,UAAU,qBAAsB,OAAOD,CAAG,CAKtH,IAJA,IAGIE,EAHAC,EAAOP,EAAUO,KAAMC,EAAe,WAATD,EAAoB,MAAiB,WAATA,EAAoB,MAAQ,QACrFE,GAAUX,GAAgBD,EAAOG,EAAkB,OAAIH,EAAOA,EAAKa,UAAY,KAC/EC,EAAab,IAAiBW,EAASG,OAAOC,yBAAyBJ,EAAQT,EAAUc,MAAQ,IAC9FC,GAAO,EACLC,EAAIjB,EAAWkB,OAAS,EAAGD,GAAK,EAAGA,IAAK,CAC7C,IAAIE,EAAU,CAAA,EACd,IAAK,IAAIC,KAAKnB,EAAWkB,EAAQC,GAAW,WAANA,EAAiB,CAAA,EAAKnB,EAAUmB,GACtE,IAAK,IAAIA,KAAKnB,EAAUoB,OAAQF,EAAQE,OAAOD,GAAKnB,EAAUoB,OAAOD,GACrED,EAAQG,eAAiB,SAAUjB,GAAK,GAAIW,EAAM,MAAM,IAAIV,UAAU,0DAA2DH,EAAkBoB,KAAKnB,EAAOC,GAAK,MAAQ,EAC5K,IAAImB,GAAS,EAAIxB,EAAWiB,IAAa,aAATT,EAAsB,CAAEiB,IAAKb,EAAWa,IAAKC,IAAKd,EAAWc,KAAQd,EAAWH,GAAMU,GACtH,GAAa,aAATX,EAAqB,CACrB,QAAe,IAAXgB,EAAmB,SACvB,GAAe,OAAXA,GAAqC,iBAAXA,EAAqB,MAAM,IAAIlB,UAAU,oBACnEC,EAAIH,EAAOoB,EAAOC,QAAMb,EAAWa,IAAMlB,IACzCA,EAAIH,EAAOoB,EAAOE,QAAMd,EAAWc,IAAMnB,IACzCA,EAAIH,EAAOoB,EAAOG,QAAOzB,EAAa0B,QAAQrB,EACtD,MACSA,EAAIH,EAAOoB,MACH,UAAThB,EAAkBN,EAAa0B,QAAQrB,GACtCK,EAAWH,GAAOF,EAE/B,CACIG,GAAQG,OAAOgB,eAAenB,EAAQT,EAAUc,KAAMH,GAC1DI,GAAO,CACT,CAEO,SAASc,EAAkBC,EAAS7B,EAAc8B,GAEvD,IADA,IAAIC,EAAWC,UAAUhB,OAAS,EACzBD,EAAI,EAAGA,EAAIf,EAAagB,OAAQD,IACrCe,EAAQC,EAAW/B,EAAae,GAAGkB,KAAKJ,EAASC,GAAS9B,EAAae,GAAGkB,KAAKJ,GAEnF,OAAOE,EAAWD,OAAQ,CAC5B,CAoOkD,mBAApBI,iBAAiCA,gBClU5D,IAACC,EAAc,MACd,IACIC,EAEAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAvEAC,EAAmB,CAACC,UAAQ,iBAE5BC,EAA0B,GAE1BC,EAAcC,YACdC,EAA6B,GAE7BC,EAAsB,GACtBC,EAA2B,GAE3BC,EAA4B,GAC5BC,EAAiC,GAEjCC,EAAsB,GACtBC,EAA2B,GAE3BC,EAAuB,GACvBC,EAA4B,GAE5BC,EAAyB,GACzBC,EAA8B,GAE9BC,EAAyB,GACzBC,EAA8B,GAE9BC,EAAyB,GACzBC,EAA8B,GAE9BC,EAA2B,GAC3BC,EAAgC,GAEhCC,EAAwB,GACxBC,GAA6B,GAE7BC,GAAwB,GACxBC,GAA6B,GAE7BC,GAA4B,GAC5BC,GAAiC,GAEjCC,GAAsB,GACtBC,GAA2B,GAE3BC,GAA0B,GAC1BC,GAA+B,GAE/BC,GAAqB,GACrBC,GAA0B,GAE1BC,GAAgC,GAChCC,GAAqC,GAErCC,GAAmC,GACnCC,GAAwC,GAExCC,GAA+B,GAC/BC,GAAoC,GAEpCC,GAA2B,GAC3BC,GAAgC,GAEhCC,GAA6B,GAC7BC,GAAkC,GAwetC,OA9dA,cAAexC,SACFhC,EAAayE,IAAK,CAC3B,WAAAC,GACIC,SAAShF,WACT8E,KAAKG,OAASrF,EAAkBkF,KAAMvC,GAA6B3C,EAAkBkF,KAAMtC,EAAqB,KAChHsC,KAAKI,aAAetF,EAAkBkF,KAAMrC,GAA2B7C,EAAkBkF,KAAMpC,EAA2B,KAC1HoC,KAAKK,OAASvF,EAAkBkF,KAAMnC,GAAiC/C,EAAkBkF,KAAMlC,EAAqB,KACpHkC,KAAKM,QAAUxF,EAAkBkF,KAAMjC,GAA2BjD,EAAkBkF,KAAMhC,EAAsB,KAChHgC,KAAKO,UAAYzF,EAAkBkF,KAAM/B,GAA4BnD,EAAkBkF,KAAM9B,EAAwB,IACrH8B,KAAKQ,UAAY1F,EAAkBkF,KAAM7B,GAA8BrD,EAAkBkF,KAAM5B,EAAwB,IACvH4B,KAAKS,UAAY3F,EAAkBkF,KAAM3B,GAA8BvD,EAAkBkF,KAAM1B,EAAwB,IACvH0B,KAAKU,YAAc5F,EAAkBkF,KAAMzB,GAA8BzD,EAAkBkF,KAAMxB,EAA0B,WAC3HwB,KAAKW,SAAW7F,EAAkBkF,KAAMvB,GAAgC3D,EAAkBkF,KAAMtB,EAAuB,KACvHsB,KAAKY,SAAW9F,EAAkBkF,KAAMrB,IAA6B7D,EAAkBkF,KAAMpB,GAAuB,SACpHoB,KAAKa,aAAe/F,EAAkBkF,KAAMnB,IAA6B/D,EAAkBkF,KAAMlB,GAA2B,KAC5HkB,KAAKc,OAAShG,EAAkBkF,KAAMjB,IAAiCjE,EAAkBkF,KAAMhB,GAAqB,KACpHgB,KAAKe,WAAajG,EAAkBkF,KAAMf,IAA2BnE,EAAkBkF,KAAMd,GAAyB,OACtHc,KAAKgB,MAAQlG,EAAkBkF,KAAMb,IAA+BrE,EAAkBkF,KAAMZ,GAAoB,KAEhHY,KAAKiB,iBAAmBnG,EAAkBkF,KAAMX,IAA0BvE,EAAkBkF,KAAMV,GAA+B,IACjIU,KAAKkB,oBAAsBpG,EAAkBkF,KAAMT,IAAqCzE,EAAkBkF,KAAMR,GAAkC,KAClJQ,KAAKmB,gBAAkBrG,EAAkBkF,KAAMP,IAAwC3E,EAAkBkF,KAAMN,GAA8B,KAC7IM,KAAKoB,YAActG,EAAkBkF,KAAML,IAAoC7E,EAAkBkF,KAAMJ,IAA0B,IACjII,KAAKqB,cAAgBvG,EAAkBkF,KAAMH,IAAgC/E,EAAkBkF,KAAMF,GAA4B,IACjIE,KAAKsB,cAAgBxG,EAAkBkF,KAAMD,IAAkC,IAAIwB,KACnFvB,KAAKwB,aAAe,CACxB,QAEI,MAAMC,GAA8B,mBAAXC,QAAyBA,OAAOC,SAAW9H,OAAO+H,OAAOrE,EAAYmE,OAAOC,WAAa,WAAQ,EAC1HnG,EAAoB,CAACqG,EAAAA,YACrBpG,EAA0B,CAACoG,EAAAA,YAC3BnG,EAAoB,CAACmG,EAAAA,YACrBlG,EAAqB,CAACkG,EAAAA,YACtBjG,EAAuB,CAACiG,EAAAA,SAAS,CAAEC,KAAMC,OAAQC,UAAW,eAC5DnG,EAAuB,CAACgG,EAAAA,SAAS,CAAEC,KAAMC,OAAQC,UAAW,eAC5DlG,EAAuB,CAAC+F,EAAAA,SAAS,CAAEC,KAAMC,UACzChG,EAAyB,CAAC8F,EAAAA,YAC1B7F,EAAsB,CAAC6F,EAAAA,YACvB5F,EAAsB,CAAC4F,EAAAA,YACvB3F,EAA0B,CAAC2F,EAAAA,SAAS,CAAEC,KAAMG,MAAOD,WAAW,KAC9D7F,EAAoB,CAAC0F,EAAAA,SAAS,CAAEC,KAAMG,MAAOD,WAAW,KACxD5F,EAAwB,CAACyF,EAAAA,SAAS,CAAEC,KAAMjI,OAAQmI,WAAW,KAC7D3F,EAAmB,CAACwF,EAAAA,SAAS,CAAEC,KAAMG,MAAOD,WAAW,KACvD1F,EAA8B,CAACuF,EAAAA,SAAS,CAAEC,KAAMC,UAChDxF,EAAiC,CAACsF,EAAAA,SAAS,CAAEC,KAAMG,SACnDzF,EAA6B,CAACqF,EAAAA,SAAS,CAAEC,KAAMG,SAC/CxF,EAAyB,CAACoF,EAAAA,SAAS,CAAEC,KAAMC,UAC3CrF,EAA2B,CAACmF,EAAAA,SAAS,CAAEC,KAAMC,UAC7CpF,EAA+B,CAACuF,QAAM,aACtCtF,EAAkC,CAACsF,QAAM,gBACzCrF,EAA4B,CAACqF,QAAM,UACnCpF,EAAsB,CAACqF,EAAAA,WACvBpF,EAAgC,CAACqF,EAAAA,SAAS,wBAAyB,CAAEC,SAAS,EAAMC,UAAU,KAC9FtF,EAA+B,CAACoF,EAAAA,SAAS,uBAAwB,CAAEC,SAAS,EAAMC,UAAU,KAC5FrF,EAAkC,CAACmF,EAAAA,SAAS,0BAA2B,CAAEC,SAAS,EAAMC,UAAU,KAClGpF,EAAqB,CAACqF,EAAAA,UACtBpF,EAAuB,CAACqF,EAAAA,UACxB3J,EAAamH,KAAM,KAAMrD,EAA8B,CAAEnD,KAAM,SAAUO,KAAM,mBAAoB0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,qBAAsBA,EAAKnI,IAAKmI,GAAOA,EAAIC,kBAAoBlB,SAAUF,IAAa,KAAMhE,GACpP5E,EAAamH,KAAM,KAAMpD,EAAiC,CAAEpD,KAAM,SAAUO,KAAM,sBAAuB0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,wBAAyBA,EAAKnI,IAAKmI,GAAOA,EAAIE,qBAAuBnB,SAAUF,IAAa,KAAMhE,GAChQ5E,EAAamH,KAAM,KAAMnD,EAA2B,CAAErD,KAAM,SAAUO,KAAM,gBAAiB0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,kBAAmBA,EAAKnI,IAAKmI,GAAOA,EAAIG,eAAiBpB,SAAUF,IAAa,KAAMhE,GACxO5E,EAAamH,KAAM,KAAMlD,EAAqB,CAAEtD,KAAM,SAAUO,KAAM,UAAW0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,YAAaA,EAAKnI,IAAKmI,GAAOA,EAAII,SAAWrB,SAAUF,IAAa,KAAMhE,GAChN5E,EAAamH,KAAM,KAAMjD,EAA+B,CAAEvD,KAAM,SAAUO,KAAM,oBAAqB0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,sBAAuBA,EAAKnI,IAAKmI,GAAOA,EAAIK,mBAAqBtB,SAAUF,IAAa,KAAMhE,GACxP5E,EAAamH,KAAM,KAAMhD,EAA8B,CAAExD,KAAM,SAAUO,KAAM,mBAAoB0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,qBAAsBA,EAAKnI,IAAKmI,GAAOA,EAAIM,kBAAoBvB,SAAUF,IAAa,KAAMhE,GACpP5E,EAAamH,KAAM,KAAM/C,EAAiC,CAAEzD,KAAM,SAAUO,KAAM,sBAAuB0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,wBAAyBA,EAAKnI,IAAKmI,GAAOA,EAAIO,qBAAuBxB,SAAUF,IAAa,KAAMhE,GAChQ5E,EAAamH,KAAM,KAAM9C,EAAoB,CAAE1D,KAAM,SAAUO,KAAM,SAAU0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,WAAYA,EAAKnI,IAAKmI,GAAOA,EAAIL,QAAUZ,SAAUF,IAAa,KAAMhE,GAC5M5E,EAAamH,KAAM,KAAM7C,EAAsB,CAAE3D,KAAM,SAAUO,KAAM,WAAY0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,aAAcA,EAAKnI,IAAKmI,GAAOA,EAAIQ,UAAYzB,SAAUF,IAAa,KAAMhE,GACpN5E,EAAa,KAAM,KAAM2C,EAAmB,CAAEhC,KAAM,QAASO,KAAM,QAAS0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,UAAWA,EAAKnI,IAAKmI,GAAOA,EAAIzC,MAAOzF,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIzC,MAAQnF,IAAY2G,SAAUF,IAAa/D,EAAqBC,GACnQ9E,EAAa,KAAM,KAAM4C,EAAyB,CAAEjC,KAAM,QAASO,KAAM,cAAe0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,gBAAiBA,EAAKnI,IAAKmI,GAAOA,EAAIxC,YAAa1F,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIxC,YAAcpF,IAAY2G,SAAUF,IAAa7D,EAA2BC,GACvShF,EAAa,KAAM,KAAM6C,EAAmB,CAAElC,KAAM,QAASO,KAAM,QAAS0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,UAAWA,EAAKnI,IAAKmI,GAAOA,EAAIvC,MAAO3F,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIvC,MAAQrF,IAAY2G,SAAUF,IAAa3D,EAAqBC,GACnQlF,EAAa,KAAM,KAAM8C,EAAoB,CAAEnC,KAAM,QAASO,KAAM,SAAU0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,WAAYA,EAAKnI,IAAKmI,GAAOA,EAAItC,OAAQ5F,IAAK,CAACkI,EAAK5H,KAAY4H,EAAItC,OAAStF,IAAY2G,SAAUF,IAAazD,EAAsBC,GACzQpF,EAAa,KAAM,KAAM+C,EAAsB,CAAEpC,KAAM,QAASO,KAAM,WAAY0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,aAAcA,EAAKnI,IAAKmI,GAAOA,EAAIrC,SAAU7F,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIrC,SAAWvF,IAAY2G,SAAUF,IAAavD,EAAwBC,GACrRtF,EAAa,KAAM,KAAMgD,EAAsB,CAAErC,KAAM,QAASO,KAAM,WAAY0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,aAAcA,EAAKnI,IAAKmI,GAAOA,EAAIpC,SAAU9F,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIpC,SAAWxF,IAAY2G,SAAUF,IAAarD,EAAwBC,GACrRxF,EAAa,KAAM,KAAMiD,EAAsB,CAAEtC,KAAM,QAASO,KAAM,WAAY0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,aAAcA,EAAKnI,IAAKmI,GAAOA,EAAInC,SAAU/F,IAAK,CAACkI,EAAK5H,KAAY4H,EAAInC,SAAWzF,IAAY2G,SAAUF,IAAanD,EAAwBC,GACrR1F,EAAa,KAAM,KAAMkD,EAAwB,CAAEvC,KAAM,QAASO,KAAM,aAAc0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,eAAgBA,EAAKnI,IAAKmI,GAAOA,EAAIlC,WAAYhG,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIlC,WAAa1F,IAAY2G,SAAUF,IAAajD,EAA0BC,GACjS5F,EAAa,KAAM,KAAMmD,EAAqB,CAAExC,KAAM,QAASO,KAAM,UAAW0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,YAAaA,EAAKnI,IAAKmI,GAAOA,EAAIjC,QAASjG,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIjC,QAAU3F,IAAY2G,SAAUF,IAAa/C,EAAuBC,IAC/Q9F,EAAa,KAAM,KAAMoD,EAAqB,CAAEzC,KAAM,QAASO,KAAM,UAAW0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,YAAaA,EAAKnI,IAAKmI,GAAOA,EAAIhC,QAASlG,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIhC,QAAU5F,IAAY2G,SAAUF,IAAa7C,GAAuBC,IAC/QhG,EAAa,KAAM,KAAMqD,EAAyB,CAAE1C,KAAM,QAASO,KAAM,cAAe0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,gBAAiBA,EAAKnI,IAAKmI,GAAOA,EAAI/B,YAAanG,IAAK,CAACkI,EAAK5H,KAAY4H,EAAI/B,YAAc7F,IAAY2G,SAAUF,IAAa3C,GAA2BC,IACvSlG,EAAa,KAAM,KAAMsD,EAAmB,CAAE3C,KAAM,QAASO,KAAM,QAAS0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,UAAWA,EAAKnI,IAAKmI,GAAOA,EAAI9B,MAAOpG,IAAK,CAACkI,EAAK5H,KAAY4H,EAAI9B,MAAQ9F,IAAY2G,SAAUF,IAAazC,GAAqBC,IACnQpG,EAAa,KAAM,KAAMuD,EAAuB,CAAE5C,KAAM,QAASO,KAAM,YAAa0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,cAAeA,EAAKnI,IAAKmI,GAAOA,EAAI7B,UAAWrG,IAAK,CAACkI,EAAK5H,KAAY4H,EAAI7B,UAAY/F,IAAY2G,SAAUF,IAAavC,GAAyBC,IAC3RtG,EAAa,KAAM,KAAMwD,EAAkB,CAAE7C,KAAM,QAASO,KAAM,OAAQ0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,SAAUA,EAAKnI,IAAKmI,GAAOA,EAAI5B,KAAMtG,IAAK,CAACkI,EAAK5H,KAAY4H,EAAI5B,KAAOhG,IAAY2G,SAAUF,IAAarC,GAAoBC,IAC7PxG,EAAa,KAAM,KAAMyD,EAA6B,CAAE9C,KAAM,QAASO,KAAM,kBAAmB0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,oBAAqBA,EAAKnI,IAAKmI,GAAOA,EAAI3B,gBAAiBvG,IAAK,CAACkI,EAAK5H,KAAY4H,EAAI3B,gBAAkBjG,IAAY2G,SAAUF,IAAanC,GAA+BC,IAC/T1G,EAAa,KAAM,KAAM0D,EAAgC,CAAE/C,KAAM,QAASO,KAAM,qBAAsB0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,uBAAwBA,EAAKnI,IAAKmI,GAAOA,EAAI1B,mBAAoBxG,IAAK,CAACkI,EAAK5H,KAAY4H,EAAI1B,mBAAqBlG,IAAY2G,SAAUF,IAAajC,GAAkCC,IACjV5G,EAAa,KAAM,KAAM2D,EAA4B,CAAEhD,KAAM,QAASO,KAAM,iBAAkB0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,mBAAoBA,EAAKnI,IAAKmI,GAAOA,EAAIzB,eAAgBzG,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIzB,eAAiBnG,IAAY2G,SAAUF,IAAa/B,GAA8BC,IACzT9G,EAAa,KAAM,KAAM4D,EAAwB,CAAEjD,KAAM,QAASO,KAAM,aAAc0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,eAAgBA,EAAKnI,IAAKmI,GAAOA,EAAIxB,WAAY1G,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIxB,WAAapG,IAAY2G,SAAUF,IAAa7B,GAA0BC,IACjShH,EAAa,KAAM,KAAM6D,EAA0B,CAAElD,KAAM,QAASO,KAAM,eAAgB0I,QAAQ,EAAOC,SAAS,EAAOrI,OAAQ,CAAEsI,IAAKC,GAAO,iBAAkBA,EAAKnI,IAAKmI,GAAOA,EAAIvB,aAAc3G,IAAK,CAACkI,EAAK5H,KAAY4H,EAAIvB,aAAerG,IAAY2G,SAAUF,IAAa3B,GAA4BC,IAC7SlH,EAAa,KAAMyC,EAAmB,CAAEN,MAAOO,GAAc6B,EAAkB,CAAE5D,KAAM,QAASO,KAAMwB,EAAWxB,KAAM4H,SAAUF,IAAa,KAAMnE,GACpJ/B,EAAaD,EAAiBN,MAC1ByG,IAAW5H,OAAOgB,eAAeU,EAAYmG,OAAOC,SAAU,CAAE0B,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMvI,MAAOyG,KACjI3G,EAAkBS,EAAY+B,EAC1C,CACQ,gBAAAuF,GAC8B,IAAtB7C,KAAKwB,eACLxB,KAAKwB,aAAexB,KAAKS,SACzBT,KAAKiB,gBAAkBjB,KAAKS,SAEpC,CACA,mBAAAqC,GACI9C,KAAKkB,mBAAqB,IAAIe,MAAMjC,KAAKa,YAAY3G,QAAQsJ,MAAK,EACtE,CACA,aAAAT,GACI/C,KAAKmB,eAAiB,IAAIc,MAAMjC,KAAKc,MAAM5G,QAAQsJ,MAAK,GACxDxD,KAAKoB,YAAa,CACtB,CACA,WAAAqC,CAAYC,GACR,GAAIA,EAAQ,EACR,OACJ,MAAMC,EAAW3D,KAAKiB,gBACtBjB,KAAKiB,gBAAkByC,EACvB1D,KAAKiD,kBAAkBU,EAC3B,CACA,KAAAC,GACIC,OAAOD,OACX,CACA,KAAAE,GACI9D,KAAKkB,mBAAqB,IAAIe,MAAMjC,KAAKa,YAAY3G,QAAQsJ,MAAK,GAClExD,KAAKmB,eAAiB,IAAIc,MAAMjC,KAAKc,MAAM5G,QAAQsJ,MAAK,GACxDxD,KAAKoB,YAAa,EAClBpB,KAAKiB,gBAAkBjB,KAAKwB,cAAgBxB,KAAKS,SAEjD,IAAK,MAAM,CAAGsD,KAAU/D,KAAKsB,aAAa0C,UACtCC,cAAcF,EAAMG,YAExBlE,KAAKsB,aAAa6C,QAClBnE,KAAKqB,cACT,CACA,WAAA+C,CAAYC,GACR,MAAMC,EAAOtE,KAAKwB,cAAgBxB,KAAKS,SACvC,OAAa,IAAT6D,EACOD,EAEJE,KAAKC,MADIH,EAASrE,KAAKiB,gBAAmBqD,EACtB,KAAO,GACtC,CACA,YAAAG,CAAaJ,GACT,MAAMK,EAAS1E,KAAKoE,YAAYC,GAChC,GAAIK,IAAWH,KAAKI,MAAMD,GACtB,OAAOA,EAAOE,WAElB,MAAMC,EAAOH,EAASH,KAAKI,MAAMD,GAC3BI,EAAQP,KAAKI,MAAMD,GACnBK,EAAc,CAChB,CAAC,IAAM,KAAW,CAAC,IAAM,KAAW,CAAC,GAAK,KAC1C,CAAC,IAAM,KAAW,CAAC,IAAM,MAE7B,IAAK,MAAOC,EAAKC,KAAQF,EACrB,GAAIR,KAAKW,IAAIL,EAAOG,GAAO,IACvB,OAAOF,EAAQ,EAAI,GAAGA,IAAQG,IAAQA,EAG9C,OAAOP,EAAOS,QAAQ,EAC1B,CACA,gBAAAC,CAAiBC,GACb,MAAMC,EAAU,IAAItF,KAAKkB,oBACzBoE,EAAQD,IAAUC,EAAQD,GAC1BrF,KAAKkB,mBAAqBoE,EAC1BtF,KAAKmD,oBAAoBkC,EAAOC,EAAQD,GAC5C,CACA,kBAAAE,CAAmBF,GACf,MAAMC,EAAU,IAAItF,KAAKmB,gBACzBmE,EAAQD,IAAUC,EAAQD,GAC1BrF,KAAKmB,eAAiBmE,EACtBtF,KAAKkD,iBAAiBmC,EAAOC,EAAQD,GACzC,CACA,iBAAAG,GACQxF,KAAKiB,gBAAkB,GACvBjB,KAAKyD,YAAYzD,KAAKiB,gBAAkB,EAEhD,CACA,iBAAAwE,GACIzF,KAAKyD,YAAYzD,KAAKiB,gBAAkB,EAC5C,CACA,YAAAyE,GACQ1F,KAAKoB,WAAa,IAClBpB,KAAKoB,WAAapB,KAAKoB,WAAa,EAE5C,CACA,YAAAuE,GAEQ3F,KAAKoB,WADLpB,KAAKoB,WAAapB,KAAKc,MAAM5G,OAAS,EACpB8F,KAAKoB,WAAa,GAGlB,CAE1B,CACA,eAAAwE,GACI5F,KAAKoB,WAAa,CACtB,CACA,UAAAyE,CAAWC,EAAWC,GAClB,GAAI/F,KAAKsB,aAAaqB,IAAImD,GACtB,OACJ,MAAME,EAAsB,GAAVD,EACZ7B,EAAaL,OAAOoC,YAAY,KAClC,MAAMlC,EAAQ/D,KAAKsB,aAAa7G,IAAIqL,GACpC,GAAK/B,EAAL,CAEA,GAAIA,EAAMiC,WAAa,EAInB,OAHA/B,cAAcF,EAAMG,YACpBlE,KAAKsB,aAAa5G,IAAIoL,EAAW,IAAK/B,EAAOiC,UAAW,EAAGhM,MAAM,SACjEgG,KAAKqB,eAGTrB,KAAKsB,aAAa5G,IAAIoL,EAAW,IAAK/B,EAAOiC,UAAWjC,EAAMiC,UAAY,IAC1EhG,KAAKqB,cARD,GASL,KACHrB,KAAKsB,aAAa5G,IAAIoL,EAAW,CAAEE,YAAW9B,aAAYlK,MAAM,IAChEgG,KAAKqB,cACT,CACA,OAAA2B,GACI,IAAK,MAAM,CAAGe,KAAU/D,KAAKsB,aAAa0C,UACtCC,cAAcF,EAAMG,YAExBlE,KAAKsB,aAAa6C,OACtB,CACA,WAAA+B,CAAYJ,GACR,MAAM/B,EAAQ/D,KAAKsB,aAAa7G,IAAIqL,GAChC/B,IACAE,cAAcF,EAAMG,YACpBlE,KAAKsB,aAAa6E,OAAOL,GACzB9F,KAAKqB,eAEb,CACA,WAAA+E,CAAYC,GAGR,MAAO,GAFG9B,KAAKI,MAAM0B,EAAU,QACrBA,EAAU,IACHzB,WAAW0B,SAAS,EAAG,MAC5C,CACA,aAAAC,CAAcR,GACV,GAAIA,EAAU,GACV,MAAO,GAAGA,QACd,MAAMS,EAAMjC,KAAKI,MAAMoB,EAAU,IAC3BU,EAAOV,EAAU,GACvB,OAAOU,EAAO,EAAI,GAAGD,MAAQC,KAAU,GAAGD,IAC9C,CACA,iBAAAvD,CAAkByD,GACd,MAAO,CAAEjG,SAAUT,KAAKiB,gBAAiByF,mBAC7C,CACA,gBAAAxD,CAAiB4C,EAAWa,GACxB,MAAO,CAAEb,YAAWa,YACxB,CACA,mBAAAxD,CAAoByD,EAAiBC,GACjC,MAAO,CAAED,kBAAiBC,UAASC,WAAY9G,KAAKa,YAAY+F,GACpE,CACA,MAAArE,GACI,OAAOwE,EAAAA,GAAY,GA7Td,6uZA8TT,CACA,QAAA3D,GAE8B,IAAtBpD,KAAKwB,cAAsBxB,KAAKS,SAAW,IAC3CT,KAAKwB,aAAexB,KAAKS,SACzBT,KAAKiB,gBAAkBjB,KAAKS,UAEhC,MAAMuG,EAAYhH,KAAKO,SAAWP,KAAKQ,SAEjCyG,EAAS,IAAI1F,IACnBvB,KAAKa,YAAYqG,QAAQ,CAACC,EAAKlN,KAC3B,MAAMmN,EAAQD,EAAIC,OAAS,GACtBH,EAAOtE,IAAIyE,IACZH,EAAOvM,IAAI0M,EAAO,IACtBH,EAAOxM,IAAI2M,GAAO7M,KAAK,CAAEuM,WAAYK,EAAK9B,MAAOpL,MAErD,MAAMoN,EAAgBrH,KAAKoB,YAAc,EACnCkG,EAAUtH,KAAKgB,KAAK9G,OAAS,GAAK8F,KAAKW,QAAQzG,OAAS,EACxDqN,EAAavH,KAAKW,QAAQzG,OAAS,EACnCsN,EAAiBxH,KAAKa,YAAY3G,OAAS,EAC3CuN,EAAWzH,KAAKc,MAAM5G,OAAS,EAC/BwN,EAAaF,GAAkBC,EAC/BE,EAAU3H,KAAKO,SAAW,GAAKP,KAAKQ,SAAW,GAAKR,KAAKS,SAAW,GAAKT,KAAKU,WAAWxG,OAAS,EAElG0N,EAAkC,OAAnB5H,KAAKe,UACpB8G,EAAoBD,EAAe5H,KAAKe,UAAU+G,SAAW,EAC7DC,EAAmBH,EAAe5H,KAAKe,UAAUiH,QAAU,EAC3DC,EAAiBL,EAAe5H,KAAKe,UAAUmH,MAAQ,EACvDC,EAAeP,EAAe5H,KAAKe,UAAUqH,IAAM,EACnDC,EAAiBT,EAAe5H,KAAKe,UAAUuH,MAAQ,EACvDC,EAAkBX,EAAe5H,KAAKe,UAAUyH,OAAS,EACzDC,EAAWb,QAAyCc,IAAzB1I,KAAKe,UAAUuH,MAC1CK,EAAYf,QAA0Cc,IAA1B1I,KAAKe,UAAUyH,OAE3CI,EAAkB,GACxB,IAAK,MAAOC,EAAWC,KAAU7B,EAAOjD,UAAW,CAC3C6E,GACAD,EAAgBrO,KAAKwO,EAAAA,IAAK,8CAA8CF,UAE5E,IAAK,MAAM/B,WAAEA,EAAUzB,MAAEA,KAAWyD,EAAO,CACvC,MAAME,EAAYhJ,KAAKkB,mBAAmBmE,KAAU,EAEpDuD,EAAgBrO,KAAKwO,MAAK;0CADLC,EAAY,8BAAgC,cAEnB,IAAMhJ,KAAKoF,iBAAiBC;kFACZ2D,YAAqBC,GAAMA,EAAEC,6BAA6B,IAAMlJ,KAAKoF,iBAAiBC;sDAClHrF,KAAKyE,aAAaqC,EAAWzC,WAAWyC,EAAWqC;oDACrDrC,EAAW/M;;UAG/C,CACJ,CACA,OAAOgP,MAAc;;cAEnB/I,KAAKK;;wBAEKL,KAAKK,eAAeL,KAAKG;;;;;sCAKXH,KAAKG;gBAC3BH,KAAKI;6CACwBJ,KAAKI;;gBAElCJ,KAAKM;8CACyBN,KAAKM;;gBAEnCgH;;oBAEIC;4CACwBvH,KAAKW;;gBAEjCX,KAAKgB,KAAKoI,IAAIC,GAAON,EAAAA,IAAK,6BAA6BM;;;;;cAKzD1B;;kBAEI3H,KAAKO,SAAW;;;mDAGiBP,KAAKuG,cAAcvG,KAAKO;;;kBAGzDP,KAAKQ,SAAW;;;mDAGiBR,KAAKuG,cAAcvG,KAAKQ;;;kBAGzDwG,EAAY;;;mDAGqBhH,KAAKuG,cAAcS;;;kBAGpDhH,KAAKiB,gBAAkB;;;mDAGUjB,KAAKiB;;;kBAGtCjB,KAAKU;;;sEAG+CV,KAAKU,eAAeV,KAAKU;;;;;;cAMjFgH;;kBAEIF;;;;gEAI8C,IAAMxH,KAAKwF;yDAClBxF,KAAKiB;gEACE,IAAMjB,KAAKyF;;;;oBAIvDmD;;;;;kBAKFnB;;;;oBAIEzH,KAAKc,MAAMsI,IAAI,CAACE,EAAMrP,KAC1B,MAAMsP,EAAcvJ,KAAKmB,eAAelH,KAAM,EACxCuP,EAAWxJ,KAAKoB,aAAenH,EAC/B8J,EAAQ/D,KAAKsB,aAAa7G,IAAIR,GAC9BwP,OAAqBf,IAAV3E,EAEX2F,EADYD,GAAY1F,EAAM/J,KACL,6BAA+B,GACxD2P,EAAYF,EAAY1F,EAAM/J,KAAO,QAAUgG,KAAKoG,YAAYrC,EAAMiC,WAAc,GAE1F,OAAO+C,MAAK;gDACoBQ,EAAc,0BAA4B,MAAMC,EAAW,uBAAyB;mEACjE,IAAMxJ,KAAKuF,mBAAmBtL,aAAasP,EAAc,kBAAoB;4BACpHA,EAAc,IAAWtP,EAAI;;;2DAGEqP,EAAKM;gCAChCN,EAAKO;4DACuBP,EAAKO;;gCAEjCP,EAAKjJ;mEAC8BiJ,EAAKjJ,oBAAoBpG,EAAI;;gCAZ3DqP,EAAKQ,OAASL;4EAeyB,IAAMzJ,KAAK6F,WAAW5L,EAAGqP,EAAKQ;;;;gCAI1E9J,KAAKuG,cAAc+C,EAAKQ;;;gCAGxBL;gEACgCC;gCAChCC;4EAC4C,IAAM3J,KAAKkG,YAAYjM;;;;;;;;;;;;cAarF2N;;;;;;uDAMyCC;;;;uDAIAE;;;;uDAIAE;;;;uDAIAE;;;oBAGnCM;;yDAEqCJ;;;;oBAIrCM;;yDAEqCJ;;;;;;;;cAQ3Cd;;mBAEKJ;+BACY,IAAMrH,KAAK4F;;kBAExByB;+BACa,IAAMrH,KAAK0F,4BAA4B1F,KAAKoB,YAAc;+BAC1D,IAAMpB,KAAK2F;kBACxB3F,KAAKoB,YAAcpB,KAAKc,MAAM5G,OAAS,EAAI,SAAW;;;uDAGjB,IAAM8F,KAAK4D;6BACrC,IAAM5D,KAAK8D;;;;KAKhC,GAEGvI,CACV,EAxiBiB","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"snice-recipe.min.js","sources":["../../../node_modules/tslib/tslib.es6.mjs","../../components/recipe/snice-recipe.js"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import { __runInitializers, __esDecorate } from 'tslib';\nimport { element, property, watch, dispose, dispatch, styles, render, css, html } from 'snice';\n\nvar cssContent = \":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);color:var(--snice-color-text,rgb(23 23 23));width:100%;--recipe-bg:var(--snice-color-surface-container-high, rgb(252 251 249));--recipe-border:var(--snice-color-border, rgb(226 226 226));--recipe-text:var(--snice-color-text, rgb(23 23 23));--recipe-text-secondary:var(--snice-color-text-secondary, rgb(82 82 82));--recipe-text-tertiary:var(--snice-color-text-tertiary, rgb(115 115 115));--recipe-primary:var(--snice-color-primary, rgb(37 99 235));--recipe-success:var(--snice-color-success, rgb(22 163 74));--recipe-danger:var(--snice-color-danger, rgb(220 38 38));--recipe-radius:var(--snice-border-radius-lg, 0.5rem);--recipe-shadow:var(--snice-shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1))}.recipe{background:var(--recipe-bg);border-radius:var(--recipe-radius);box-shadow:var(--recipe-shadow);overflow:hidden}.recipe__hero{position:relative;width:100%;overflow:hidden}.recipe__hero img{width:100%;height:auto;display:block;object-fit:cover;max-height:25rem}.recipe__header{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);padding:var(--snice-spacing-lg,1.5rem)}.recipe__title{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);margin:0 0 var(--snice-spacing-xs,.5rem);font-size:var(--snice-heading-xl, 1.5rem);font-weight:var(--snice-font-weight-bold,700);line-height:var(--snice-line-height-normal, 1.5);color:var(--recipe-text)}.recipe__description{margin:0 0 var(--snice-spacing-sm,.75rem);font-size:var(--snice-font-size-md, 1rem);color:var(--recipe-text-secondary);line-height:var(--snice-line-height-normal, 1.5)}.recipe__author{font-size:var(--snice-font-size-sm, .875rem);color:var(--recipe-text-tertiary)}.recipe__tags{display:flex;flex-wrap:wrap;gap:var(--snice-spacing-2xs,.25rem);margin-top:var(--snice-spacing-sm,.75rem)}.recipe__tag{display:inline-flex;align-items:center;padding:var(--snice-spacing-3xs,.125rem) var(--snice-spacing-xs,.5rem);font-size:var(--snice-font-size-xs, .75rem);border-radius:9999px;background:var(--snice-color-surface,rgb(255 255 255));border:1px solid var(--recipe-border);color:var(--recipe-text-secondary)}.recipe__meta{display:flex;flex-wrap:wrap;gap:var(--snice-spacing-md,1rem);padding:var(--snice-spacing-md,1rem) var(--snice-spacing-lg,1.5rem);border-top:1px solid var(--recipe-border);border-bottom:1px solid var(--recipe-border);background:var(--snice-color-surface,rgb(255 255 255))}.recipe__meta-item{display:flex;flex-direction:column;align-items:center;gap:var(--snice-spacing-3xs,.125rem);min-width:4rem}.recipe__meta-label{font-size:var(--snice-font-size-xs, .75rem);color:var(--recipe-text-tertiary);text-transform:uppercase;letter-spacing:var(--snice-tracking-wide, .03em)}.recipe__meta-value{font-size:var(--snice-font-size-md, 1rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--recipe-text)}.recipe__difficulty--easy{color:var(--recipe-success)}.recipe__difficulty--medium{color:var(--snice-color-warning,rgb(234 179 8))}.recipe__difficulty--hard{color:var(--recipe-danger)}.recipe__content{display:grid;grid-template-columns:1fr 2fr;gap:var(--snice-spacing-lg,1.5rem);padding:var(--snice-spacing-lg,1.5rem)}@media (max-width:768px){.recipe__content{grid-template-columns:1fr}}.recipe__servings-adjuster{display:flex;align-items:center;gap:var(--snice-spacing-xs,.5rem);margin-bottom:var(--snice-spacing-md,1rem)}.recipe__servings-adjuster span{font-size:var(--snice-font-size-md, 1rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--recipe-text)}.recipe__servings-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:1px solid var(--recipe-border);border-radius:50%;background:var(--snice-color-surface,rgb(255 255 255));color:var(--recipe-text);font-size:var(--snice-font-size-lg, 1.125rem);cursor:pointer;transition:background var(--snice-transition-fast, 150ms),border-color var(--snice-transition-fast, 150ms);padding:0;line-height:1}.recipe__servings-btn:hover{border-color:var(--recipe-primary);background:var(--snice-color-primary-subtle,rgb(239 246 255))}.recipe__servings-btn:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:var(--snice-focus-ring-offset,2px)}.recipe__servings-count{min-width:2rem;text-align:center;font-weight:var(--snice-font-weight-bold,700);font-size:var(--snice-font-size-lg, 1.125rem)}.recipe__ingredients-section{position:relative}.recipe__section-title{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);font-size:var(--snice-heading-md, 1.125rem);font-weight:var(--snice-font-weight-semibold,600);margin:0 0 var(--snice-spacing-sm,.75rem);color:var(--recipe-text)}.recipe__ingredient-group-title{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);font-size:var(--snice-heading-sm, 1rem);font-weight:var(--snice-font-weight-medium,500);color:var(--recipe-text-secondary);margin:var(--snice-spacing-sm,.75rem) 0 var(--snice-spacing-2xs,.25rem)}.recipe__ingredients-list{list-style:none;padding:0;margin:0}.recipe__ingredient{display:flex;align-items:center;gap:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-xs,.5rem) 0;border-bottom:1px solid var(--recipe-border);cursor:pointer;transition:opacity var(--snice-transition-fast, 150ms)}.recipe__ingredient:last-child{border-bottom:none}.recipe__ingredient--checked{opacity:.5}.recipe__ingredient--checked .recipe__ingredient-text{text-decoration:line-through}.recipe__ingredient-checkbox{appearance:none;width:1.125rem;height:1.125rem;border:2px solid var(--recipe-border);border-radius:3px;cursor:pointer;flex-shrink:0;position:relative;transition:background var(--snice-transition-fast, 150ms),border-color var(--snice-transition-fast, 150ms)}.recipe__ingredient-checkbox:checked{background:var(--recipe-primary);border-color:var(--recipe-primary)}.recipe__ingredient-checkbox:checked::after{content:'';position:absolute;left:3px;top:0;width:.375rem;height:.625rem;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.recipe__ingredient-checkbox:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:var(--snice-focus-ring-offset,2px)}.recipe__ingredient-amount{font-weight:var(--snice-font-weight-semibold,600);white-space:nowrap;color:var(--recipe-text)}.recipe__ingredient-text{color:var(--recipe-text-secondary)}.recipe__steps-section{position:relative}.recipe__steps-list{list-style:none;padding:0;margin:0;counter-reset:step-counter}.recipe__step{display:flex;gap:var(--snice-spacing-md,1rem);padding:var(--snice-spacing-md,1rem) 0;border-bottom:1px solid var(--recipe-border);counter-increment:step-counter;transition:opacity var(--snice-transition-fast, 150ms)}.recipe__step:last-child{border-bottom:none}.recipe__step--completed{opacity:.5}.recipe__step--active{background:var(--snice-color-primary-subtle,rgb(239 246 255));margin:0 calc(-1 * var(--snice-spacing-sm,.75rem));padding-left:var(--snice-spacing-sm,.75rem);padding-right:var(--snice-spacing-sm,.75rem);border-radius:var(--snice-border-radius-md,.25rem)}.recipe__step-number{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;background:var(--recipe-primary);color:var(--snice-color-text-inverse,rgb(250 250 250));font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-bold,700);cursor:pointer;transition:background var(--snice-transition-fast, 150ms)}.recipe__step--completed .recipe__step-number{background:var(--recipe-success)}.recipe__step-number:hover{opacity:.8}.recipe__step-body{flex:1;min-width:0}.recipe__step-text{font-size:var(--snice-font-size-md, 1rem);line-height:var(--snice-line-height-normal, 1.5);color:var(--recipe-text)}.recipe__step-tip{margin-top:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);background:var(--snice-color-primary-subtle,rgb(239 246 255));border-left:3px solid var(--recipe-primary);border-radius:0 var(--snice-border-radius-md,.25rem) var(--snice-border-radius-md,.25rem) 0;font-size:var(--snice-font-size-sm, .875rem);color:var(--recipe-text-secondary)}.recipe__step-image{margin-top:var(--snice-spacing-xs,.5rem);width:100%;max-width:20rem;border-radius:var(--snice-border-radius-md,.25rem)}.recipe__step-timer-btn{display:inline-flex;align-items:center;gap:var(--snice-spacing-3xs,.125rem);margin-top:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-3xs,.125rem) var(--snice-spacing-xs,.5rem);border:1px solid var(--recipe-primary);border-radius:var(--snice-border-radius-md,.25rem);background:0 0;color:var(--recipe-primary);font-size:var(--snice-font-size-sm, .875rem);cursor:pointer;transition:background var(--snice-transition-fast, 150ms)}.recipe__step-timer-btn:hover{background:var(--snice-color-primary-subtle,rgb(239 246 255))}.recipe__step-timer-btn:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:var(--snice-focus-ring-offset,2px)}.recipe__step-timer-btn svg{width:.875rem;height:.875rem}.recipe__active-timer{display:inline-flex;align-items:center;gap:var(--snice-spacing-2xs,.25rem);margin-top:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-2xs,.25rem) var(--snice-spacing-xs,.5rem);background:var(--snice-color-primary-subtle,rgb(239 246 255));border-radius:var(--snice-border-radius-md,.25rem);font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--recipe-primary)}.recipe__active-timer--done{background:var(--snice-color-success-subtle,rgb(220 252 231));color:var(--recipe-success)}.recipe__timer-cancel{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border:none;border-radius:50%;background:0 0;color:inherit;cursor:pointer;padding:0;font-size:.75rem}.recipe__timer-cancel:hover{background:rgb(0 0 0 / .1)}.recipe__nutrition{padding:var(--snice-spacing-lg,1.5rem);border-top:1px solid var(--recipe-border)}.recipe__nutrition-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(6rem,1fr));gap:var(--snice-spacing-md,1rem);margin-top:var(--snice-spacing-sm,.75rem)}.recipe__nutrition-item{text-align:center;padding:var(--snice-spacing-sm,.75rem);background:var(--snice-color-surface,rgb(255 255 255));border-radius:var(--snice-border-radius-md,.25rem);border:1px solid var(--recipe-border)}.recipe__nutrition-value{font-size:var(--snice-font-size-lg, 1.125rem);font-weight:var(--snice-font-weight-bold,700);color:var(--recipe-text)}.recipe__nutrition-label{font-size:var(--snice-font-size-xs, .75rem);color:var(--recipe-text-tertiary);margin-top:var(--snice-spacing-3xs,.125rem)}.recipe__step-controls{display:flex;gap:var(--snice-spacing-xs,.5rem);padding:var(--snice-spacing-sm,.75rem) var(--snice-spacing-lg,1.5rem);border-top:1px solid var(--recipe-border)}.recipe__step-controls button{padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-md,1rem);border:1px solid var(--recipe-border);border-radius:var(--snice-border-radius-md,.25rem);background:var(--snice-color-surface,rgb(255 255 255));color:var(--recipe-text);font-size:var(--snice-font-size-sm, .875rem);cursor:pointer;transition:background var(--snice-transition-fast, 150ms),border-color var(--snice-transition-fast, 150ms)}.recipe__step-controls button:hover{border-color:var(--recipe-primary);background:var(--snice-color-primary-subtle,rgb(239 246 255))}.recipe__step-controls button:disabled{opacity:.4;cursor:not-allowed}.recipe__step-controls button:focus-visible{outline:var(--snice-focus-ring-width,2px) solid var(--snice-focus-ring-color,rgb(59 130 246 / .5));outline-offset:var(--snice-focus-ring-offset,2px)}.recipe__print-btn{margin-left:auto}:host([variant=card]) .recipe__content{grid-template-columns:1fr;padding:var(--snice-spacing-md,1rem)}:host([variant=card]) .recipe__hero img{max-height:15rem}:host([variant=card]) .recipe__header{font-family:var(--snice-font-family-display, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);padding:var(--snice-spacing-md,1rem)}@media print{.recipe{box-shadow:none;border:1px solid #ccc}.recipe__active-timer,.recipe__servings-btn,.recipe__step-controls,.recipe__step-timer-btn,.recipe__timer-cancel{display:none!important}.recipe__ingredient--checked,.recipe__step--completed{opacity:1}.recipe__ingredient--checked .recipe__ingredient-text{text-decoration:none}}[hidden]{display:none!important}@media (prefers-reduced-motion:reduce){*{transition-duration:0s!important;animation-duration:0s!important}}\";\n\nlet SniceRecipe = (() => {\n let _classDecorators = [element('snice-recipe')];\n let _classDescriptor;\n let _classExtraInitializers = [];\n let _classThis;\n let _classSuper = HTMLElement;\n let _instanceExtraInitializers = [];\n let _title_decorators;\n let _title_initializers = [];\n let _title_extraInitializers = [];\n let _description_decorators;\n let _description_initializers = [];\n let _description_extraInitializers = [];\n let _image_decorators;\n let _image_initializers = [];\n let _image_extraInitializers = [];\n let _author_decorators;\n let _author_initializers = [];\n let _author_extraInitializers = [];\n let _prepTime_decorators;\n let _prepTime_initializers = [];\n let _prepTime_extraInitializers = [];\n let _cookTime_decorators;\n let _cookTime_initializers = [];\n let _cookTime_extraInitializers = [];\n let _servings_decorators;\n let _servings_initializers = [];\n let _servings_extraInitializers = [];\n let _difficulty_decorators;\n let _difficulty_initializers = [];\n let _difficulty_extraInitializers = [];\n let _cuisine_decorators;\n let _cuisine_initializers = [];\n let _cuisine_extraInitializers = [];\n let _variant_decorators;\n let _variant_initializers = [];\n let _variant_extraInitializers = [];\n let _ingredients_decorators;\n let _ingredients_initializers = [];\n let _ingredients_extraInitializers = [];\n let _steps_decorators;\n let _steps_initializers = [];\n let _steps_extraInitializers = [];\n let _nutrition_decorators;\n let _nutrition_initializers = [];\n let _nutrition_extraInitializers = [];\n let _tags_decorators;\n let _tags_initializers = [];\n let _tags_extraInitializers = [];\n let _currentServings_decorators;\n let _currentServings_initializers = [];\n let _currentServings_extraInitializers = [];\n let _checkedIngredients_decorators;\n let _checkedIngredients_initializers = [];\n let _checkedIngredients_extraInitializers = [];\n let _completedSteps_decorators;\n let _completedSteps_initializers = [];\n let _completedSteps_extraInitializers = [];\n let _activeStep_decorators;\n let _activeStep_initializers = [];\n let _activeStep_extraInitializers = [];\n let _timerVersion_decorators;\n let _timerVersion_initializers = [];\n let _timerVersion_extraInitializers = [];\n let _onServingsChange_decorators;\n let _onIngredientsChange_decorators;\n let _onStepsChange_decorators;\n let _cleanup_decorators;\n let _emitServingChange_decorators;\n let _emitStepComplete_decorators;\n let _emitIngredientCheck_decorators;\n let _styles_decorators;\n let _template_decorators;\n (class extends _classSuper {\n static { _classThis = this; }\n constructor() {\n super(...arguments);\n this.title = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _title_initializers, ''));\n this.description = (__runInitializers(this, _title_extraInitializers), __runInitializers(this, _description_initializers, ''));\n this.image = (__runInitializers(this, _description_extraInitializers), __runInitializers(this, _image_initializers, ''));\n this.author = (__runInitializers(this, _image_extraInitializers), __runInitializers(this, _author_initializers, ''));\n this.prepTime = (__runInitializers(this, _author_extraInitializers), __runInitializers(this, _prepTime_initializers, 0));\n this.cookTime = (__runInitializers(this, _prepTime_extraInitializers), __runInitializers(this, _cookTime_initializers, 0));\n this.servings = (__runInitializers(this, _cookTime_extraInitializers), __runInitializers(this, _servings_initializers, 4));\n this.difficulty = (__runInitializers(this, _servings_extraInitializers), __runInitializers(this, _difficulty_initializers, 'medium'));\n this.cuisine = (__runInitializers(this, _difficulty_extraInitializers), __runInitializers(this, _cuisine_initializers, ''));\n this.variant = (__runInitializers(this, _cuisine_extraInitializers), __runInitializers(this, _variant_initializers, 'full'));\n this.ingredients = (__runInitializers(this, _variant_extraInitializers), __runInitializers(this, _ingredients_initializers, []));\n this.steps = (__runInitializers(this, _ingredients_extraInitializers), __runInitializers(this, _steps_initializers, []));\n this.nutrition = (__runInitializers(this, _steps_extraInitializers), __runInitializers(this, _nutrition_initializers, null));\n this.tags = (__runInitializers(this, _nutrition_extraInitializers), __runInitializers(this, _tags_initializers, []));\n // Internal state\n this.currentServings = (__runInitializers(this, _tags_extraInitializers), __runInitializers(this, _currentServings_initializers, 0));\n this.checkedIngredients = (__runInitializers(this, _currentServings_extraInitializers), __runInitializers(this, _checkedIngredients_initializers, []));\n this.completedSteps = (__runInitializers(this, _checkedIngredients_extraInitializers), __runInitializers(this, _completedSteps_initializers, []));\n this.activeStep = (__runInitializers(this, _completedSteps_extraInitializers), __runInitializers(this, _activeStep_initializers, -1));\n this.timerVersion = (__runInitializers(this, _activeStep_extraInitializers), __runInitializers(this, _timerVersion_initializers, 0));\n this.activeTimers = (__runInitializers(this, _timerVersion_extraInitializers), new Map());\n this.baseServings = 0;\n }\n static {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;\n _title_decorators = [property()];\n _description_decorators = [property()];\n _image_decorators = [property()];\n _author_decorators = [property()];\n _prepTime_decorators = [property({ type: Number, attribute: 'prep-time' })];\n _cookTime_decorators = [property({ type: Number, attribute: 'cook-time' })];\n _servings_decorators = [property({ type: Number })];\n _difficulty_decorators = [property()];\n _cuisine_decorators = [property()];\n _variant_decorators = [property()];\n _ingredients_decorators = [property({ type: Array, attribute: false })];\n _steps_decorators = [property({ type: Array, attribute: false })];\n _nutrition_decorators = [property({ type: Object, attribute: false })];\n _tags_decorators = [property({ type: Array, attribute: false })];\n _currentServings_decorators = [property({ type: Number })];\n _checkedIngredients_decorators = [property({ type: Array })];\n _completedSteps_decorators = [property({ type: Array })];\n _activeStep_decorators = [property({ type: Number })];\n _timerVersion_decorators = [property({ type: Number })];\n _onServingsChange_decorators = [watch('servings')];\n _onIngredientsChange_decorators = [watch('ingredients')];\n _onStepsChange_decorators = [watch('steps')];\n _cleanup_decorators = [dispose()];\n _emitServingChange_decorators = [dispatch('recipe-serving-change', { bubbles: true, composed: true })];\n _emitStepComplete_decorators = [dispatch('recipe-step-complete', { bubbles: true, composed: true })];\n _emitIngredientCheck_decorators = [dispatch('recipe-ingredient-check', { bubbles: true, composed: true })];\n _styles_decorators = [styles()];\n _template_decorators = [render()];\n __esDecorate(this, null, _onServingsChange_decorators, { kind: \"method\", name: \"onServingsChange\", static: false, private: false, access: { has: obj => \"onServingsChange\" in obj, get: obj => obj.onServingsChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _onIngredientsChange_decorators, { kind: \"method\", name: \"onIngredientsChange\", static: false, private: false, access: { has: obj => \"onIngredientsChange\" in obj, get: obj => obj.onIngredientsChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _onStepsChange_decorators, { kind: \"method\", name: \"onStepsChange\", static: false, private: false, access: { has: obj => \"onStepsChange\" in obj, get: obj => obj.onStepsChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _cleanup_decorators, { kind: \"method\", name: \"cleanup\", static: false, private: false, access: { has: obj => \"cleanup\" in obj, get: obj => obj.cleanup }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _emitServingChange_decorators, { kind: \"method\", name: \"emitServingChange\", static: false, private: false, access: { has: obj => \"emitServingChange\" in obj, get: obj => obj.emitServingChange }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _emitStepComplete_decorators, { kind: \"method\", name: \"emitStepComplete\", static: false, private: false, access: { has: obj => \"emitStepComplete\" in obj, get: obj => obj.emitStepComplete }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _emitIngredientCheck_decorators, { kind: \"method\", name: \"emitIngredientCheck\", static: false, private: false, access: { has: obj => \"emitIngredientCheck\" in obj, get: obj => obj.emitIngredientCheck }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _styles_decorators, { kind: \"method\", name: \"styles\", static: false, private: false, access: { has: obj => \"styles\" in obj, get: obj => obj.styles }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(this, null, _template_decorators, { kind: \"method\", name: \"template\", static: false, private: false, access: { has: obj => \"template\" in obj, get: obj => obj.template }, metadata: _metadata }, null, _instanceExtraInitializers);\n __esDecorate(null, null, _title_decorators, { kind: \"field\", name: \"title\", static: false, private: false, access: { has: obj => \"title\" in obj, get: obj => obj.title, set: (obj, value) => { obj.title = value; } }, metadata: _metadata }, _title_initializers, _title_extraInitializers);\n __esDecorate(null, null, _description_decorators, { kind: \"field\", name: \"description\", static: false, private: false, access: { has: obj => \"description\" in obj, get: obj => obj.description, set: (obj, value) => { obj.description = value; } }, metadata: _metadata }, _description_initializers, _description_extraInitializers);\n __esDecorate(null, null, _image_decorators, { kind: \"field\", name: \"image\", static: false, private: false, access: { has: obj => \"image\" in obj, get: obj => obj.image, set: (obj, value) => { obj.image = value; } }, metadata: _metadata }, _image_initializers, _image_extraInitializers);\n __esDecorate(null, null, _author_decorators, { kind: \"field\", name: \"author\", static: false, private: false, access: { has: obj => \"author\" in obj, get: obj => obj.author, set: (obj, value) => { obj.author = value; } }, metadata: _metadata }, _author_initializers, _author_extraInitializers);\n __esDecorate(null, null, _prepTime_decorators, { kind: \"field\", name: \"prepTime\", static: false, private: false, access: { has: obj => \"prepTime\" in obj, get: obj => obj.prepTime, set: (obj, value) => { obj.prepTime = value; } }, metadata: _metadata }, _prepTime_initializers, _prepTime_extraInitializers);\n __esDecorate(null, null, _cookTime_decorators, { kind: \"field\", name: \"cookTime\", static: false, private: false, access: { has: obj => \"cookTime\" in obj, get: obj => obj.cookTime, set: (obj, value) => { obj.cookTime = value; } }, metadata: _metadata }, _cookTime_initializers, _cookTime_extraInitializers);\n __esDecorate(null, null, _servings_decorators, { kind: \"field\", name: \"servings\", static: false, private: false, access: { has: obj => \"servings\" in obj, get: obj => obj.servings, set: (obj, value) => { obj.servings = value; } }, metadata: _metadata }, _servings_initializers, _servings_extraInitializers);\n __esDecorate(null, null, _difficulty_decorators, { kind: \"field\", name: \"difficulty\", static: false, private: false, access: { has: obj => \"difficulty\" in obj, get: obj => obj.difficulty, set: (obj, value) => { obj.difficulty = value; } }, metadata: _metadata }, _difficulty_initializers, _difficulty_extraInitializers);\n __esDecorate(null, null, _cuisine_decorators, { kind: \"field\", name: \"cuisine\", static: false, private: false, access: { has: obj => \"cuisine\" in obj, get: obj => obj.cuisine, set: (obj, value) => { obj.cuisine = value; } }, metadata: _metadata }, _cuisine_initializers, _cuisine_extraInitializers);\n __esDecorate(null, null, _variant_decorators, { kind: \"field\", name: \"variant\", static: false, private: false, access: { has: obj => \"variant\" in obj, get: obj => obj.variant, set: (obj, value) => { obj.variant = value; } }, metadata: _metadata }, _variant_initializers, _variant_extraInitializers);\n __esDecorate(null, null, _ingredients_decorators, { kind: \"field\", name: \"ingredients\", static: false, private: false, access: { has: obj => \"ingredients\" in obj, get: obj => obj.ingredients, set: (obj, value) => { obj.ingredients = value; } }, metadata: _metadata }, _ingredients_initializers, _ingredients_extraInitializers);\n __esDecorate(null, null, _steps_decorators, { kind: \"field\", name: \"steps\", static: false, private: false, access: { has: obj => \"steps\" in obj, get: obj => obj.steps, set: (obj, value) => { obj.steps = value; } }, metadata: _metadata }, _steps_initializers, _steps_extraInitializers);\n __esDecorate(null, null, _nutrition_decorators, { kind: \"field\", name: \"nutrition\", static: false, private: false, access: { has: obj => \"nutrition\" in obj, get: obj => obj.nutrition, set: (obj, value) => { obj.nutrition = value; } }, metadata: _metadata }, _nutrition_initializers, _nutrition_extraInitializers);\n __esDecorate(null, null, _tags_decorators, { kind: \"field\", name: \"tags\", static: false, private: false, access: { has: obj => \"tags\" in obj, get: obj => obj.tags, set: (obj, value) => { obj.tags = value; } }, metadata: _metadata }, _tags_initializers, _tags_extraInitializers);\n __esDecorate(null, null, _currentServings_decorators, { kind: \"field\", name: \"currentServings\", static: false, private: false, access: { has: obj => \"currentServings\" in obj, get: obj => obj.currentServings, set: (obj, value) => { obj.currentServings = value; } }, metadata: _metadata }, _currentServings_initializers, _currentServings_extraInitializers);\n __esDecorate(null, null, _checkedIngredients_decorators, { kind: \"field\", name: \"checkedIngredients\", static: false, private: false, access: { has: obj => \"checkedIngredients\" in obj, get: obj => obj.checkedIngredients, set: (obj, value) => { obj.checkedIngredients = value; } }, metadata: _metadata }, _checkedIngredients_initializers, _checkedIngredients_extraInitializers);\n __esDecorate(null, null, _completedSteps_decorators, { kind: \"field\", name: \"completedSteps\", static: false, private: false, access: { has: obj => \"completedSteps\" in obj, get: obj => obj.completedSteps, set: (obj, value) => { obj.completedSteps = value; } }, metadata: _metadata }, _completedSteps_initializers, _completedSteps_extraInitializers);\n __esDecorate(null, null, _activeStep_decorators, { kind: \"field\", name: \"activeStep\", static: false, private: false, access: { has: obj => \"activeStep\" in obj, get: obj => obj.activeStep, set: (obj, value) => { obj.activeStep = value; } }, metadata: _metadata }, _activeStep_initializers, _activeStep_extraInitializers);\n __esDecorate(null, null, _timerVersion_decorators, { kind: \"field\", name: \"timerVersion\", static: false, private: false, access: { has: obj => \"timerVersion\" in obj, get: obj => obj.timerVersion, set: (obj, value) => { obj.timerVersion = value; } }, metadata: _metadata }, _timerVersion_initializers, _timerVersion_extraInitializers);\n __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: \"class\", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);\n _classThis = _classDescriptor.value;\n if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n __runInitializers(_classThis, _classExtraInitializers);\n }\n onServingsChange() {\n if (this.baseServings === 0) {\n this.baseServings = this.servings;\n this.currentServings = this.servings;\n }\n }\n onIngredientsChange() {\n this.checkedIngredients = new Array(this.ingredients.length).fill(false);\n }\n onStepsChange() {\n this.completedSteps = new Array(this.steps.length).fill(false);\n this.activeStep = -1;\n }\n setServings(count) {\n if (count < 1)\n return;\n const previous = this.currentServings;\n this.currentServings = count;\n this.emitServingChange(previous);\n }\n print() {\n window.print();\n }\n reset() {\n this.checkedIngredients = new Array(this.ingredients.length).fill(false);\n this.completedSteps = new Array(this.steps.length).fill(false);\n this.activeStep = -1;\n this.currentServings = this.baseServings || this.servings;\n // Clear all active timers\n for (const [, timer] of this.activeTimers.entries()) {\n clearInterval(timer.intervalId);\n }\n this.activeTimers.clear();\n this.timerVersion++;\n }\n scaleAmount(amount) {\n const base = this.baseServings || this.servings;\n if (base === 0)\n return amount;\n const scaled = (amount * this.currentServings) / base;\n return Math.round(scaled * 100) / 100;\n }\n formatAmount(amount) {\n const scaled = this.scaleAmount(amount);\n if (scaled === Math.floor(scaled))\n return scaled.toString();\n // Common fractions\n const frac = scaled - Math.floor(scaled);\n const whole = Math.floor(scaled);\n const fractionMap = [\n [0.25, '\\u00BC'], [0.33, '\\u2153'], [0.5, '\\u00BD'],\n [0.67, '\\u2154'], [0.75, '\\u00BE'],\n ];\n for (const [val, sym] of fractionMap) {\n if (Math.abs(frac - val) < 0.05) {\n return whole > 0 ? `${whole}${sym}` : sym;\n }\n }\n return scaled.toFixed(1);\n }\n toggleIngredient(index) {\n const updated = [...this.checkedIngredients];\n updated[index] = !updated[index];\n this.checkedIngredients = updated;\n this.emitIngredientCheck(index, updated[index]);\n }\n toggleStepComplete(index) {\n const updated = [...this.completedSteps];\n updated[index] = !updated[index];\n this.completedSteps = updated;\n this.emitStepComplete(index, updated[index]);\n }\n decrementServings() {\n if (this.currentServings > 1) {\n this.setServings(this.currentServings - 1);\n }\n }\n incrementServings() {\n this.setServings(this.currentServings + 1);\n }\n goToPrevStep() {\n if (this.activeStep > 0) {\n this.activeStep = this.activeStep - 1;\n }\n }\n goToNextStep() {\n if (this.activeStep < this.steps.length - 1) {\n this.activeStep = this.activeStep + 1;\n }\n else {\n this.activeStep = -1;\n }\n }\n startStepByStep() {\n this.activeStep = 0;\n }\n startTimer(stepIndex, minutes) {\n if (this.activeTimers.has(stepIndex))\n return;\n const remaining = minutes * 60;\n const intervalId = window.setInterval(() => {\n const timer = this.activeTimers.get(stepIndex);\n if (!timer)\n return;\n if (timer.remaining <= 1) {\n clearInterval(timer.intervalId);\n this.activeTimers.set(stepIndex, { ...timer, remaining: 0, done: true });\n this.timerVersion++;\n return;\n }\n this.activeTimers.set(stepIndex, { ...timer, remaining: timer.remaining - 1 });\n this.timerVersion++;\n }, 1000);\n this.activeTimers.set(stepIndex, { remaining, intervalId, done: false });\n this.timerVersion++;\n }\n cleanup() {\n for (const [, timer] of this.activeTimers.entries()) {\n clearInterval(timer.intervalId);\n }\n this.activeTimers.clear();\n }\n cancelTimer(stepIndex) {\n const timer = this.activeTimers.get(stepIndex);\n if (timer) {\n clearInterval(timer.intervalId);\n this.activeTimers.delete(stepIndex);\n this.timerVersion++;\n }\n }\n formatTimer(seconds) {\n const m = Math.floor(seconds / 60);\n const s = seconds % 60;\n return `${m}:${s.toString().padStart(2, '0')}`;\n }\n formatMinutes(minutes) {\n if (minutes < 60)\n return `${minutes} min`;\n const hrs = Math.floor(minutes / 60);\n const mins = minutes % 60;\n return mins > 0 ? `${hrs}h ${mins}m` : `${hrs}h`;\n }\n emitServingChange(previousServings) {\n return { servings: this.currentServings, previousServings };\n }\n emitStepComplete(stepIndex, completed) {\n return { stepIndex, completed };\n }\n emitIngredientCheck(ingredientIndex, checked) {\n return { ingredientIndex, checked, ingredient: this.ingredients[ingredientIndex] };\n }\n styles() {\n return css /*css*/ `${cssContent}`;\n }\n template() {\n // Initialize base servings on first render\n if (this.baseServings === 0 && this.servings > 0) {\n this.baseServings = this.servings;\n this.currentServings = this.servings;\n }\n const totalTime = this.prepTime + this.cookTime;\n // Group ingredients\n const groups = new Map();\n this.ingredients.forEach((ing, i) => {\n const group = ing.group || '';\n if (!groups.has(group))\n groups.set(group, []);\n groups.get(group).push({ ingredient: ing, index: i });\n });\n const hasStepByStep = this.activeStep >= 0;\n const hasTags = this.tags.length > 0 || this.cuisine.length > 0;\n const hasCuisine = this.cuisine.length > 0;\n const hasIngredients = this.ingredients.length > 0;\n const hasSteps = this.steps.length > 0;\n const hasContent = hasIngredients || hasSteps;\n const hasMeta = this.prepTime > 0 || this.cookTime > 0 || this.servings > 0 || this.difficulty.length > 0;\n // Pre-compute nutrition values to avoid null access in template\n const hasNutrition = this.nutrition !== null;\n const nutritionCalories = hasNutrition ? this.nutrition.calories : 0;\n const nutritionProtein = hasNutrition ? this.nutrition.protein : 0;\n const nutritionCarbs = hasNutrition ? this.nutrition.carbs : 0;\n const nutritionFat = hasNutrition ? this.nutrition.fat : 0;\n const nutritionFiber = hasNutrition ? this.nutrition.fiber : 0;\n const nutritionSodium = hasNutrition ? this.nutrition.sodium : 0;\n const hasFiber = hasNutrition && this.nutrition.fiber !== undefined;\n const hasSodium = hasNutrition && this.nutrition.sodium !== undefined;\n // Pre-build ingredient items to avoid nested template issues\n const ingredientItems = [];\n for (const [groupName, items] of groups.entries()) {\n if (groupName) {\n ingredientItems.push(html `<li class=\"recipe__ingredient-group-title\">${groupName}</li>`);\n }\n for (const { ingredient, index } of items) {\n const isChecked = this.checkedIngredients[index] || false;\n const checkedClass = isChecked ? 'recipe__ingredient--checked' : '';\n ingredientItems.push(html `\n <li class=\"recipe__ingredient ${checkedClass}\" @click=${() => this.toggleIngredient(index)}>\n <input type=\"checkbox\" class=\"recipe__ingredient-checkbox\" aria-label=\"${ingredient.name}\" ?checked=${isChecked} @click=${(e) => e.stopPropagation()} @change=${() => this.toggleIngredient(index)} />\n <span class=\"recipe__ingredient-amount\">${this.formatAmount(ingredient.amount)} ${ingredient.unit}</span>\n <span class=\"recipe__ingredient-text\">${ingredient.name}</span>\n </li>\n `);\n }\n }\n return html /*html*/ `\n <div class=\"recipe\" part=\"container\">\n <if ${this.image}>\n <div class=\"recipe__hero\" part=\"hero\">\n <img src=\"${this.image}\" alt=\"${this.title}\" loading=\"lazy\" />\n </div>\n </if>\n\n <div class=\"recipe__header\" part=\"header\">\n <h2 class=\"recipe__title\">${this.title}</h2>\n <if ${this.description}>\n <p class=\"recipe__description\">${this.description}</p>\n </if>\n <if ${this.author}>\n <span class=\"recipe__author\">By ${this.author}</span>\n </if>\n <if ${hasTags}>\n <div class=\"recipe__tags\">\n <if ${hasCuisine}>\n <span class=\"recipe__tag\">${this.cuisine}</span>\n </if>\n ${this.tags.map(tag => html `<span class=\"recipe__tag\">${tag}</span>`)}\n </div>\n </if>\n </div>\n\n <if ${hasMeta}>\n <div class=\"recipe__meta\" part=\"meta\">\n <if ${this.prepTime > 0}>\n <div class=\"recipe__meta-item\">\n <span class=\"recipe__meta-label\">Prep</span>\n <span class=\"recipe__meta-value\">${this.formatMinutes(this.prepTime)}</span>\n </div>\n </if>\n <if ${this.cookTime > 0}>\n <div class=\"recipe__meta-item\">\n <span class=\"recipe__meta-label\">Cook</span>\n <span class=\"recipe__meta-value\">${this.formatMinutes(this.cookTime)}</span>\n </div>\n </if>\n <if ${totalTime > 0}>\n <div class=\"recipe__meta-item\">\n <span class=\"recipe__meta-label\">Total</span>\n <span class=\"recipe__meta-value\">${this.formatMinutes(totalTime)}</span>\n </div>\n </if>\n <if ${this.currentServings > 0}>\n <div class=\"recipe__meta-item\">\n <span class=\"recipe__meta-label\">Servings</span>\n <span class=\"recipe__meta-value\">${this.currentServings}</span>\n </div>\n </if>\n <if ${this.difficulty}>\n <div class=\"recipe__meta-item\">\n <span class=\"recipe__meta-label\">Difficulty</span>\n <span class=\"recipe__meta-value recipe__difficulty--${this.difficulty}\">${this.difficulty}</span>\n </div>\n </if>\n </div>\n </if>\n\n <if ${hasContent}>\n <div class=\"recipe__content\" part=\"content\">\n <if ${hasIngredients}>\n <div class=\"recipe__ingredients-section\" part=\"ingredients\">\n <h3 class=\"recipe__section-title\">Ingredients</h3>\n <div class=\"recipe__servings-adjuster\">\n <button class=\"recipe__servings-btn\" @click=${() => this.decrementServings()} aria-label=\"Decrease servings\">-</button>\n <span class=\"recipe__servings-count\">${this.currentServings}</span>\n <button class=\"recipe__servings-btn\" @click=${() => this.incrementServings()} aria-label=\"Increase servings\">+</button>\n <span>servings</span>\n </div>\n <ul class=\"recipe__ingredients-list\">\n ${ingredientItems}\n </ul>\n </div>\n </if>\n\n <if ${hasSteps}>\n <div class=\"recipe__steps-section\" part=\"steps\">\n <h3 class=\"recipe__section-title\">Instructions</h3>\n <ol class=\"recipe__steps-list\">\n ${this.steps.map((step, i) => {\n const isCompleted = this.completedSteps[i] || false;\n const isActive = this.activeStep === i;\n const timer = this.activeTimers.get(i);\n const hasTimer = timer !== undefined;\n const timerDone = hasTimer && timer.done;\n const timerClass = timerDone ? 'recipe__active-timer--done' : '';\n const timerText = hasTimer ? (timer.done ? 'Done!' : this.formatTimer(timer.remaining)) : '';\n const showTimerBtn = step.time && !hasTimer;\n return html `\n <li class=\"recipe__step ${isCompleted ? 'recipe__step--completed' : ''} ${isActive ? 'recipe__step--active' : ''}\">\n <span class=\"recipe__step-number\" @click=${() => this.toggleStepComplete(i)} title=\"${isCompleted ? 'Mark incomplete' : 'Mark complete'}\">\n ${isCompleted ? '\\u2713' : i + 1}\n </span>\n <div class=\"recipe__step-body\">\n <div class=\"recipe__step-text\">${step.text}</div>\n <if ${step.tip}>\n <div class=\"recipe__step-tip\">${step.tip}</div>\n </if>\n <if ${step.image}>\n <img class=\"recipe__step-image\" src=\"${step.image}\" alt=\"Step ${i + 1}\" loading=\"lazy\" />\n </if>\n <if ${showTimerBtn}>\n <button class=\"recipe__step-timer-btn\" @click=${() => this.startTimer(i, step.time)}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"10\"/><polyline points=\"12 6 12 12 16 14\"/>\n </svg>\n ${this.formatMinutes(step.time)}\n </button>\n </if>\n <if ${hasTimer}>\n <span class=\"recipe__active-timer ${timerClass}\">\n ${timerText}\n <button class=\"recipe__timer-cancel\" @click=${() => this.cancelTimer(i)} title=\"Cancel timer\">\\u2715</button>\n </span>\n </if>\n </div>\n </li>\n `;\n })}\n </ol>\n </div>\n </if>\n </div>\n </if>\n\n <if ${hasNutrition}>\n <div class=\"recipe__nutrition\" part=\"nutrition\">\n <h3 class=\"recipe__section-title\">Nutrition Facts</h3>\n <span class=\"recipe__author\">Per serving</span>\n <div class=\"recipe__nutrition-grid\">\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionCalories}</div>\n <div class=\"recipe__nutrition-label\">Calories</div>\n </div>\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionProtein}g</div>\n <div class=\"recipe__nutrition-label\">Protein</div>\n </div>\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionCarbs}g</div>\n <div class=\"recipe__nutrition-label\">Carbs</div>\n </div>\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionFat}g</div>\n <div class=\"recipe__nutrition-label\">Fat</div>\n </div>\n <if ${hasFiber}>\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionFiber}g</div>\n <div class=\"recipe__nutrition-label\">Fiber</div>\n </div>\n </if>\n <if ${hasSodium}>\n <div class=\"recipe__nutrition-item\">\n <div class=\"recipe__nutrition-value\">${nutritionSodium}mg</div>\n <div class=\"recipe__nutrition-label\">Sodium</div>\n </div>\n </if>\n </div>\n </div>\n </if>\n\n <if ${hasSteps}>\n <div class=\"recipe__step-controls\" part=\"controls\">\n <if ${!hasStepByStep}>\n <button @click=${() => this.startStepByStep()}>Step-by-Step</button>\n </if>\n <if ${hasStepByStep}>\n <button @click=${() => this.goToPrevStep()} ?disabled=${this.activeStep <= 0}>Previous</button>\n <button @click=${() => this.goToNextStep()}>\n ${this.activeStep >= this.steps.length - 1 ? 'Finish' : 'Next'}\n </button>\n </if>\n <button class=\"recipe__print-btn\" @click=${() => this.print()}>Print</button>\n <button @click=${() => this.reset()}>Reset</button>\n </div>\n </if>\n </div>\n `;\n }\n });\n return _classThis;\n})();\n\nexport { SniceRecipe };\n//# sourceMappingURL=snice-recipe.js.map\n"],"names":["__esDecorate","ctor","descriptorIn","decorators","contextIn","initializers","extraInitializers","accept","f","TypeError","_","kind","key","target","prototype","descriptor","Object","getOwnPropertyDescriptor","name","done","i","length","context","p","access","addInitializer","push","result","get","set","init","unshift","defineProperty","__runInitializers","thisArg","value","useValue","arguments","call","SuppressedError","SniceRecipe","_classDescriptor","_classThis","_title_decorators","_description_decorators","_image_decorators","_author_decorators","_prepTime_decorators","_cookTime_decorators","_servings_decorators","_difficulty_decorators","_cuisine_decorators","_variant_decorators","_ingredients_decorators","_steps_decorators","_nutrition_decorators","_tags_decorators","_currentServings_decorators","_checkedIngredients_decorators","_completedSteps_decorators","_activeStep_decorators","_timerVersion_decorators","_onServingsChange_decorators","_onIngredientsChange_decorators","_onStepsChange_decorators","_cleanup_decorators","_emitServingChange_decorators","_emitStepComplete_decorators","_emitIngredientCheck_decorators","_styles_decorators","_template_decorators","_classDecorators","element","_classExtraInitializers","_classSuper","HTMLElement","_instanceExtraInitializers","_title_initializers","_title_extraInitializers","_description_initializers","_description_extraInitializers","_image_initializers","_image_extraInitializers","_author_initializers","_author_extraInitializers","_prepTime_initializers","_prepTime_extraInitializers","_cookTime_initializers","_cookTime_extraInitializers","_servings_initializers","_servings_extraInitializers","_difficulty_initializers","_difficulty_extraInitializers","_cuisine_initializers","_cuisine_extraInitializers","_variant_initializers","_variant_extraInitializers","_ingredients_initializers","_ingredients_extraInitializers","_steps_initializers","_steps_extraInitializers","_nutrition_initializers","_nutrition_extraInitializers","_tags_initializers","_tags_extraInitializers","_currentServings_initializers","_currentServings_extraInitializers","_checkedIngredients_initializers","_checkedIngredients_extraInitializers","_completedSteps_initializers","_completedSteps_extraInitializers","_activeStep_initializers","_activeStep_extraInitializers","_timerVersion_initializers","_timerVersion_extraInitializers","this","constructor","super","title","description","image","author","prepTime","cookTime","servings","difficulty","cuisine","variant","ingredients","steps","nutrition","tags","currentServings","checkedIngredients","completedSteps","activeStep","timerVersion","activeTimers","Map","baseServings","_metadata","Symbol","metadata","create","property","type","Number","attribute","Array","watch","dispose","dispatch","bubbles","composed","styles","render","static","private","has","obj","onServingsChange","onIngredientsChange","onStepsChange","cleanup","emitServingChange","emitStepComplete","emitIngredientCheck","template","enumerable","configurable","writable","fill","setServings","count","previous","print","window","reset","timer","entries","clearInterval","intervalId","clear","scaleAmount","amount","base","Math","round","formatAmount","scaled","floor","toString","frac","whole","fractionMap","val","sym","abs","toFixed","toggleIngredient","index","updated","toggleStepComplete","decrementServings","incrementServings","goToPrevStep","goToNextStep","startStepByStep","startTimer","stepIndex","minutes","remaining","setInterval","cancelTimer","delete","formatTimer","seconds","padStart","formatMinutes","hrs","mins","previousServings","completed","ingredientIndex","checked","ingredient","css","totalTime","groups","forEach","ing","group","hasStepByStep","hasTags","hasCuisine","hasIngredients","hasSteps","hasContent","hasMeta","hasNutrition","nutritionCalories","calories","nutritionProtein","protein","nutritionCarbs","carbs","nutritionFat","fat","nutritionFiber","fiber","nutritionSodium","sodium","hasFiber","undefined","hasSodium","ingredientItems","groupName","items","html","isChecked","e","stopPropagation","unit","map","tag","step","isCompleted","isActive","hasTimer","timerClass","timerText","text","tip","time"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* snice v7.0.
|
|
2
|
+
* snice v7.0.3
|
|
3
3
|
* A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
|
|
4
4
|
* (c) 2024
|
|
5
5
|
* Released under the MIT License.
|
|
6
6
|
*/
|
|
7
7
|
/*!
|
|
8
|
-
* snice v7.0.
|
|
8
|
+
* snice v7.0.2
|
|
9
9
|
* A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
|
|
10
10
|
* (c) 2024
|
|
11
11
|
* Released under the MIT License.
|
|
@@ -8865,7 +8865,7 @@ if (typeof document !== 'undefined') {
|
|
|
8865
8865
|
}
|
|
8866
8866
|
|
|
8867
8867
|
/*!
|
|
8868
|
-
* snice v7.0.
|
|
8868
|
+
* snice v7.0.2
|
|
8869
8869
|
* A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
|
|
8870
8870
|
* (c) 2024
|
|
8871
8871
|
* Released under the MIT License.
|
|
@@ -8887,7 +8887,7 @@ if (!globalThis.snice) {
|
|
|
8887
8887
|
globalThis.snice.pendingControllerAttachments ??= new Map();
|
|
8888
8888
|
|
|
8889
8889
|
/*!
|
|
8890
|
-
* snice v7.0.
|
|
8890
|
+
* snice v7.0.2
|
|
8891
8891
|
* A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
|
|
8892
8892
|
* (c) 2024
|
|
8893
8893
|
* Released under the MIT License.
|