1"use strict";(self.webpackChunkmonei_docs=self.webpackChunkmonei_docs||[]).push([["12216"],{80245(e,t,n){n.r(t),n.d(t,{metadata:()=>i,default:()=>b,frontMatter:()=>d,contentTitle:()=>u,toc:()=>h,assets:()=>p});var i=JSON.parse('{"id":"subscriptions/use-prebuilt-payment-page","title":"Subscriptions with the Hosted Payment Page","description":"Activate subscriptions by redirecting customers to the MONEI Hosted Payment Page. Simplest integration \u2014 no frontend code required.","source":"@site/docs/subscriptions/use-prebuilt-payment-page.mdx","sourceDirName":"subscriptions","slug":"/subscriptions/use-prebuilt-payment-page","permalink":"/subscriptions/use-prebuilt-payment-page","draft":false,"unlisted":false,"tags":[{"inline":false,"label":"Subscriptions","permalink":"/tags/subscriptions"},{"inline":false,"label":"Hosted Payment Page","permalink":"/tags/prebuilt-page"},{"inline":false,"label":"Webhooks","permalink":"/tags/webhooks"}],"version":"current","lastUpdatedAt":1790004126000,"sidebarPosition":2,"frontMatter":{"id":"use-prebuilt-payment-page","sidebar_position":2,"sidebar_label":"Hosted Payment Page","title":"Subscriptions with the Hosted Payment Page","description":"Activate subscriptions by redirecting customers to the MONEI Hosted Payment Page. Simplest integration \u2014 no frontend code required.","keywords":["subscriptions hosted payment page","prebuilt payment page","hosted page subscription","redirect","recurring payments"],"tags":["subscriptions","prebuilt-page","webhooks"]},"sidebar":"docs","previous":{"title":"Overview","permalink":"/subscriptions/overview"},"next":{"title":"Build a custom checkout","permalink":"/subscriptions/build-custom-checkout"}}'),s=n(91987),r=n(39844),a=n(7737),o=n.n(a),c=n(50343),l=n.n(c);let d={id:"use-prebuilt-payment-page",sidebar_position:2,sidebar_label:"Hosted Payment Page",title:"Subscriptions with the Hosted Payment Page",description:"Activate subscriptions by redirecting customers to the MONEI Hosted Payment Page. Simplest integration \u2014 no frontend code required.",keywords:["subscriptions hosted payment page","prebuilt payment page","hosted page subscription","redirect","recurring payments"],tags:["subscriptions","prebuilt-page","webhooks"]},u,p={},h=[{value:"Before you begin",id:"before-you-begin",level:2},{value:"How it works",id:"how-it-works",level:2},{value:"Integration steps",id:"integration-steps",level:2},{value:"1. Create a subscription (Server-side)",id:"1-create-a-subscription-server-side",level:3},{value:"2. Activate the subscription (Server-side)",id:"2-activate-the-subscription-server-side",level:3},{value:"3. Customer completes the payment",id:"3-customer-completes-the-payment",level:3},{value:"4. Customer is redirected back to your site",id:"4-customer-is-redirected-back-to-your-site",level:3},{value:"5. Handle webhooks (Server-side)",id:"5-handle-webhooks-server-side",level:3},{value:"Before you go live",id:"before-you-go-live",level:2}];function m(e){let t={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",mermaid:"mermaid",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components},{Lightbox:n,Term:i}=t;return n||x("Lightbox",!0),i||x("Term",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["Redirect customers to the MONEI Hosted Payment Page to activate their subscription. This is the simplest way to start collecting ",(0,s.jsx)(i,{id:"recurring-payment",children:"recurring payments"})," \u2014 no frontend code required."]}),"\n",(0,s.jsx)(t.h2,{id:"before-you-begin",children:"Before you begin"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["You need a MONEI account and your ",(0,s.jsx)(t.a,{href:"https://dashboard.monei.com/settings/api",children:"API key"})," (test or live)."]}),"\n",(0,s.jsxs)(t.li,{children:["Use your ",(0,s.jsx)(t.a,{href:"/testing",children:"test mode keys"})," during development."]}),"\n",(0,s.jsxs)(t.li,{children:["Ensure at least one ",(0,s.jsx)(t.a,{href:"https://dashboard.monei.com/settings/payment-methods",children:"payment method is enabled"})," in your account settings."]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["Your API key is on ",(0,s.jsx)(t.a,{href:"https://dashboard.monei.com/settings/api",children:"MONEI Dashboard \u2192 Settings \u2192 API Access"}),":"]}),"\n",(0,s.jsx)(n,{src:"/img/dashboard/en/settings-api-access.png",alt:"API Access page in the MONEI Dashboard settings, showing your account ID and API key"}),"\n",(0,s.jsx)(t.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,s.jsx)(t.mermaid,{value:"sequenceDiagram\n participant Backend as Your Backend\n participant API as MONEI API\n participant Browser as Customer Browser\n participant Page as MONEI Payment Page\n\n Backend->>API: 1. POST /v1/subscriptions\n API--\x3e>
1Backend: subscription.id\n Backend->>API: 2. POST /v1/subscriptions/{id}/activate\n API--\x3e>Backend: redirectUrl\n Backend->>Browser: 3. Redirect to redirectUrl\n Browser->>Page: 4. Customer pays (initial payment)\n Page--\x3e>Browser: 5. Redirect to completeUrl\n API->>Backend: 6. Webhooks (payment + subscription status)\n loop Every billing interval\n API->>Backend: Webhook (recurring payment)\n end"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["Your ",(0,s.jsx)(t.strong,{children:"backend"})," creates a subscription with amount, currency, and billing interval"]}),"\n",(0,s.jsxs)(t.li,{children:["The subscription is ",(0,s.jsx)(t.strong,{children:"activated"}),", returning a ",(0,s.jsx)(t.code,{children:"redirectUrl"})," for the initial payment"]}),"\n",(0,s.jsxs)(t.li,{children:["The customer is ",(0,s.jsx)(t.strong,{children:"redirected"})," to the MONEI Hosted Payment Page"]}),"\n",(0,s.jsxs)(t.li,{children:["The customer completes the ",(0,s.jsx)(t.strong,{children:"initial payment"})," (including 3D Secure if required)"]}),"\n",(0,s.jsxs)(t.li,{children:["After payment, the customer is redirected back to your ",(0,s.jsx)(t.code,{children:"completeUrl"})]}),"\n",(0,s.jsxs)(t.li,{children:["MONEI sends ",(0,s.jsx)(t.strong,{children:"webhooks"})," for both the initial payment and subscription status changes \u2014 recurring payments are charged automatically at each billing interval"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"integration-steps",children:"Integration steps"}),"\n","\n",(0,s.jsx)(t.h3,{id:"1-create-a-subscription-server-side",children:"1. Create a subscription (Server-side)"}),"\n",(0,s.jsxs)(t.p,{children:["Create a ",(0,s.jsx)(t.a,{href:"/apis/rest/subscriptions-create",children:"Subscription"})," on your server with the billing amount, currency, and interval."]}),"\n",(0,s.jsxs)(l(),{defaultValue:"curl",groupId:"code",values:[{label:"cURL",value:"curl"},{label:"Node.js",value:"node"},{label:"PHP",value:"php"},{label:"Python",value:"python"}],children:[(0,s.jsxs)(o(),{value:"curl",children:[(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-shell",metastring:'script title="PO
1ST https://api.monei.com/v1/subscriptions"',children:'curl --request POST \'https://api.monei.com/v1/subscriptions\' \\\n--header \'Authorization: YOUR_API_KEY\' \\\n--header \'Content-Type: application/json\' \\\n--data-raw \'{\n "amount": 1500,\n "currency": "EUR",\n "interval": "month",\n "intervalCount": 1,\n "description": "Pro Plan Monthly",\n "customer": {\n "name": "John Doe",\n "email": "[email protected]"\n },\n "callbackUrl": "https://example.com/subscriptions/callback",\n "paymentCallbackUrl": "https://example.com/payments/callback"\n}\'\n'})}),(0,s.jsxs)(t.p,{children:["(Replace ",(0,s.jsx)(t.code,{children:"YOUR_API_KEY"})," with your actual MONEI API key)"]})]}),(0,s.jsx)(o(),{value:"node",children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",metastring:'title="server.js"',children:"import {Monei} from '@monei-js/node-sdk';\n\n// Replace YOUR_API_KEY with your actual MONEI API key\nconst monei = new Monei('YOUR_API_KEY');\n\nconst subscription = await monei.subscriptions.create({\n amount: 1500,\n currency: 'EUR',\n interval: 'month',\n intervalCount: 1,\n description: 'Pro Plan Monthly',\n customer: {\n name: 'John Doe',\n email: '[email protected]'\n },\n callbackUrl: 'https://example.com/subscriptions/callback',\n paymentCallbackUrl: 'https://example.com/payments/callback'\n});\n\n// You will need the subscription id in the next step\nconst subscriptionId = subscription.id;\n"})})}),(0,s.jsx)(o(),{value:"php",children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-php",metastring:'title="server.php"',children:"<?php\nrequire_once 'vendor/autoload.php';\n\nuse Monei\\MoneiClient;\nuse Monei\\Model\\CreateSubscriptionRequest;\nuse Monei\\Model\\PaymentCustomer;\n\n// Replace YOUR_API_KEY with your actual MONEI API key\n$monei = new MoneiClient('YOUR_API_KEY');\n\n$subscription = $monei->subscriptions->create(\n new CreateSubscriptionRequest([\n 'amount' => 1500,\n 'currency' => 'EUR',\n 'interval' => 'month',\n 'interval_count' => 1,\n 'description' => 'Pro Plan Monthly',\n 'customer' => new PaymentCustomer([\n 'name' => 'John Doe',\n 'email' => '[email protected]'\n ]),\n 'callback_url' => 'https://example.com/subscriptions/callback',\n 'payment_callback_url' => 'https://example.com/payments/callback'\n ])\n);\n\n// You will need the subscription id in the next step\n$subscriptionId = $subscription->getId();\n?>\n"})})}),(0,s.jsx)(o(),{value:"python",children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-python",metastring:'title="server.py"',children:'import Monei\nfrom Monei import CreateSubscriptionRequest, PaymentCustomer, SubscriptionInterval\n\n# Replace YOUR_API_KEY with your actual MONEI API key\nmonei = Monei.MoneiClient(api_key="YOUR_API_KEY")\n\nsubscription = monei.subscriptions.create(\n CreateSubscriptionRequest(\n amount=1500,\n currency="EUR",\n interval=SubscriptionInterval("month"),\n interval_count=1,\n description="Pro Plan Monthly",\n customer=PaymentCustomer(\n name="John Doe",\n email="[email protected]"\n ),\n callback_url="https://example.com/subscriptions/callback",\n payment_callback_url="https://example.com/payments/callback"\n )\n)\n\n# You will need the subscription id in the next step\nsubscription_id = subscription.id\n'})})})]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.strong,{children:"Key parameters:"})}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"amount"})," positive integer \u2014 Amount in the ",(0,s.jsx)(i,{id:"minor-currency-unit",children:"smallest currency unit"})," (e.g., 1500 = \u20AC15.00)."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"currency"})," string \u2014 Three-letter ",(0,s.jsx)(t.a,{href:"https://en.wikipedia.org/wiki/ISO_4217",children:"ISO currency code"})," (e.g., ",(0,s.jsx)(t.code,{children:"EUR"}),")."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"interval"})," string \u2014 Billing interval: ",(0,s.jsx)(t.code,{children:"day"}),", ",(0,s.jsx)(t.code,{children:"week"}),", ",(0,s.jsx)(t.code,{children:"month"}),", or ",(0,s.jsx)(t.code,{children:"year"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"intervalCount"})," number \u2014 Number of intervals between each charge (e.g., ",(0,s.jsx)(t.code,{children:"3"})," with ",(0,s.jsx)(t.code,{children:"month"})," = quarterly)."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"callbackUrl"})," string \u2014 URL that receives subscription status change webhooks."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"paymentCallbackUrl"})," string \u2014 URL that receives payment webhooks for each recurring charge."]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["Check all available ",(0,s.jsx)(t.a,{href:"/apis/rest/subscriptions-create",children:"request parameters"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"2-activate-the-subscription-server-side",children:"2. Activate the subscription (Server-side)"}),"\n",(0,s.jsxs)(t.p,{children:["Activate the subscription to start the billing process. The response includes a ",(0,s.jsx)(t.code,{children:"redirectUrl"})," to send the customer to the MONEI Hosted Payment Page."]}),"\n",(0,s.jsxs)(l(),{defaultValue:"curl",groupId:"code",values:[{label:"cURL",value:"curl"},{label:"Node.js",value:"node"},{label:"PHP",value:"php"},{label:"Python",value:"python"}],children:[(0,s.jsxs)(o(),{value:"curl",children:[(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-shell",metastring:'script title="PO
1ST https://api.monei.com/v1/subscriptions/{id}/activate"',children:"curl --request POST 'https://api.monei.com/v1/subscriptions/YOUR_SUBSCRIPTION_ID/activate' \\\n--header 'Authorization: YOUR_API_KEY' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n \"completeUrl\": \"https://example.com/checkout/complete\"\n}'\n"})}),(0,s.jsxs)(t.p,{children:["(Replace ",(0,s.jsx)(t.code,{children:"YOUR_SUBSCRIPTION_ID"})," and ",(0,s.jsx)(t.code,{children:"YOUR_API_KEY"}),")"]})]}),(0,s.jsx)(o(),{value:"node",children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",metastring:'title="server.js"',children:"const activation = await monei.subscriptions.activate('YOUR_SUBSCRIPTION_ID', {\n completeUrl: 'https://example.com/checkout/complete'\n});\n\n// Redirect the customer to this URL\nconst redirectUrl = activation.nextAction.redirectUrl;\n"})})}),(0,s.jsx)(o(),{value:"php",children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-php",metastring:'title="server.php"',children:"<?php\nuse Monei\\Model\\ActivateSubscriptionRequest;\n\n$activation = $monei->subscriptions->activate(\n 'YOUR_SUBSCRIPTION_ID',\n new ActivateSubscriptionRequest([\n 'complete_url' => 'https://example.com/checkout/complete'\n ])\n);\n\n// Redirect the customer to this URL\n$redirectUrl = $activation->getNextAction()->getRedirectUrl();\n?>\n"})})}),(0,s.jsx)(o(),{value:"python",children:(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-python",metastring:'title="server.py"',children:'from Monei import ActivateSubscriptionRequest\n\nactivation = monei.subscriptions.activate(\n "YOUR_SUBSCRIPTION_ID",\n activate_subscription_request=ActivateSubscriptionRequest(\n complete_url="https://example.com/checkout/complete"\n )\n)\n\n# Redirect the customer to this URL\nredirect_url = activation.next_action.redirect_url\n'})})})]}),"\n",(0,s.jsxs)(t.p,{children:["The activation response is a ",(0,s.jsx)(t.a,{href:"/apis/rest/schemas/payment",children:"Payment object"})," for the initial charge. Redirect the customer to ",(0,s.jsx)(t.code,{children:"nextAction.redirectUrl"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["Check all available ",(0,s.jsx)(t.a,{href:"/apis/rest/subscriptions-activate",children:"request parameters"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"3-customer-completes-the-payment",children:"3. Customer completes the payment"}),"\n",(0,s.jsx)(t.p,{children:"The customer enters their payment details on the MONEI Hosted Payment Page and completes any required 3D Secure verification."}),"\n",(0,s.jsx)(t.h3,{id:"4-customer-is-redirected-back-to-your-site",children:"4. Customer is redirected back to your site"}),"\n",(0,s.jsxs)(t.p,{children:["The customer is redirected to ",(0,s.jsx)(t.code,{children:"completeUrl"})," with ",(0,s.jsx)(t.code,{children:"payment_id"})," and ",(0,s.jsx)(t.code,{children:"subscription_id"})," query parameters."]}),"\n",(0,s.jsxs)(t.p,{children:["Use the ",(0,s.jsx)(t.a,{href:"/apis/rest/payments-get",children:"get payment"})," endpoint to check the initial payment status, and the ",(0,s.jsx)(t.a,{href:"/apis/rest/subscriptions-get",children:"get subscription"})," endpoint to verify the subscription status (it should be ",(0,s.jsx)(t.code,{children:"ACTIVE"})," or ",(0,s.jsx)(t.code,{children:"TRIALING"}),")."]}),"\n",(0,s.jsx)(t.admonition,{type:"note",children:(0,s.jsx)(t.p,{children:"Do not rely solely on the redirect to confirm the payment \u2014 always use the webhook (next step) as the authoritative source of truth."})}),"\n",(0,s.jsx)(t.h3,{id:"5-handle-webhooks-server-side",children:"5. Handle webhooks (Server-side)"}),"\n",(0,s.jsx)(t.p,{children:"MONEI sends two types of webhook notifications:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Payment callback"})," \u2014 sent to ",(0,s.jsx)(t.code,{children:"paymentCallbackUrl"})," for the initial payment and each recurring charge. The request body contains the full ",(0,s.jsx)(t.a,{href:"/apis/rest/schemas/payment",children:"Payment object"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Subscription callback"})," \u2014 sent to ",(0,s.jsx)(t.code,{children:"callbackUrl"})," when the subscription status changes (e.g., ",(0,s.jsx)(t.code,{children:"PENDING"})," \u2192 ",(0,s.jsx)(t.code,{children:"ACTIVE"}),"). The request body contains the full ",(0,s.jsx)(t.a,{href:"/apis/rest/schemas/subscription",children:"Subscription object"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["Each request includes a ",(0,s.jsx)(t.code,{children:"MONEI-Signature"})," header. ",(0,s.jsx)(t.a,{href:"/guides/verify-signature",children:"Verify this signature"})," to confirm the request is from MONEI, and return a ",(0,s.jsx)(t.code,{children:"200"})," HTTP status code to acknowledge receipt."]}),"\n",(0,s.jsxs)(t.p,{children:["If MONEI does not receive a ",(0,s.jsx)(t.code,{children:"200"})," response, the notification will be retried."]}),"\n",(0,s.jsx)(t.h2,{id:"before-you-go-live",children:"Before you go live"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Switch to your ",(0,s.jsx)(t.a,{href:"https://dashboard.monei.com/settings/api",children:"live mode"})," API key."]}),"\n",(0,s.jsxs)(t.li,{children:["Ensure your ",(0,s.jsx)(t.a,{href:"https://dashboard.monei.com/settings/payment-methods",children:"payment methods are enabled"})," in live mode."]}),"\n",(0,s.jsx)(t.li,{children:"Test your webhook endpoints handle both payment and subscription callbacks correctly."}),"\n"]}),"\n",(0,s.jsxs)(t.admonition,{title:"Test mode limits",type:"note",children:[(0,s.jsx)(t.p,{children:"In test mode, subscriptions have the following limits:"}),(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Maximum ",(0,s.jsx)(t.strong,{children:"3 active subscriptions"})," per account"]}),"\n",(0,s.jsxs)(t.li,{children:["Subscriptions are ",(0,s.jsx)(t.strong,{children:"auto-canceled after 12 payments"})]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Minute and hour"})," billing intervals are available for faster testing"]}),"\n"]})]})]})}function b(e={}){let{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(m,{...e})}):m(e)}function x(e,t){throw Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}
1,25090(e,t,n){n.r(t),n.d(t,{default:()=>i});let i={tabList:"tabList_Wasw",tabItem:"tabItem_xsPF"}},50343(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){let t=(0,a.default)(),n=(0,l.useTabsContextValue)(e);return s.default.createElement(l.TabsProvider,{value:n,key:String(t)},s.default.createElement(h,{className:e.className},(0,l.sanitizeTabsChildren)(e.children)))};let s=i(n(71763)),r=n(51562),a=i(n(43673)),o=i(n(82778)),c=n(93254),l=n(62229),d=i(n(25090));function u(e){let{className:t}=e,{selectedValue:n,selectValue:i,tabValues:r,block:a}=(0,l.useTabs)(),u=[],{blockElementScrollPositionUntilNextRender:p}=(0,c.useScrollPositionBlocker)(),h=e=>{let t=e.currentTarget,s=r[u.indexOf(t)].value;s!==n&&(p(t),i(s))},m=e=>{var t,n;let i=null;switch(e.key){case"Enter":h(e);break;case"ArrowRight":{let n=u.indexOf(e.currentTarget)+1;i=null!=(t=u[n])?t:u[0];break}case"ArrowLeft":{let t=u.indexOf(e.currentTarget)-1;i=null!=(n=u[t])?n:u[u.length-1]}}null==i||i.focus()};return s.default.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.default)("tabs",{"tabs--block":a},t)},r.map(e=>{var t,i;let{value:r,label:a,attributes:c}=e;return s.default.createElement("li",(t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},i=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(i=i.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),i.forEach(function(t){var i;i=n[t],t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i})}return e}({role:"tab",tabIndex:n===r?0:-1,"aria-selected":n===r,key:r,ref:e=>{u.push(e)},onKeyDown:m,onClick:h},c),i=i={className:(0,o.default)("tabs__item",d.default.tabItem,null==c?void 0:c.className,{"tabs__item--active":n===r})},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(i)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}),t),null!=a?a:r)}))}function p(e){let{children:t}=e;return s.default.createElement("div",{className:"margin-top--md"},t)}function h(e){let{className:t,children:n}=e;return s.default.createElement("div",{className:(0,o.default)(r.ThemeClassNames.tabs.container,"tabs-container",d.default.tabList)},s.default.createElement(u,{className:t}),s.default.createElement(p,null,n))}},39844(e,t,n){n.d(t,{R:()=>a,x:()=>o});var i=n(71763);let s={},r=i.createContext(s);function a(e){let t=i.useContext(r);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.