PageSourceSearch

https://syncsmart.vercel.app/_next/static/chunks/pages/docs/products/Dynamics/internal-a8ff601fd41cd312.js

js syncsmart.vercel.app collected 2026-10-03 07:51:03 UTC 21,681 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7447],{80148:(e,t,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/docs/products/Dynamics/internal",function(){return s(4944)}])},4944:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>c,metadata:()=>r});var o=s(74848),n=s(76170),a=s(64324);let r={author:"Eric Popelka"},i=function(e){let{children:t}=e;return(0,o.jsx)(a.A,{children:t})};function l(e){let t={a:"a",code:"code",em:"em",figure:"figure",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.h1,{id:"internals-hubspot--microsoft-dynamics-365-integration",children:[(0,o.jsx)(t.a,{"aria-label":"Link to this section",className:"anchor",href:"#internals-hubspot--microsoft-dynamics-365-integration",children:(0,o.jsx)(t.span,{className:"icon icon-link"})}),"Internals: HubSpot + Microsoft Dynamics 365 Integration"]}),"\n",(0,o.jsxs)(t.h2,{id:"how-are-records-synced-from-microsoft-dynamics-365-to-hubspot",children:[(0,o.jsx)(t.a,{"aria-label":"Link to this section",className:"anchor",href:"#how-are-records-synced-from-microsoft-dynamics-365-to-hubspot",children:(0,o.jsx)(t.span,{className:"icon icon-link"})}),"How are records synced from Microsoft Dynamics 365 to HubSpot?"]}),"\n",(0,o.jsx)(t.p,{children:"There are two ways in which records can flow from Microsoft Dynamics 365 to HubSpot via our integration:"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["The customer has a solution package installed from us that instructs Microsoft Dynamics 365 to send a webhook event to the workflow\n",(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces/177a4f41-b202-4da0-a910-ddd01e360df3/projects/326e1442-170a-44a8-bb12-dc30de5cb802/workflows/6da7ae84-aaf8-41a7-a04c-bacf63142824",children:"[Master] Dynamics Webhook HubSpot Operations"}),",\nlocated inside the project ",(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces/177a4f41-b202-4da0-a910-ddd01e360df3/projects/326e1442-170a-44a8-bb12-dc30de5cb802/workflows",children:"HubSpot+Dynamics Master"}),".\nThat webhook then locates the URL of the webhook ",(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces/177a4f41-b202-4da0-a910-ddd01e360df3/projects/d7c97bd2-c7c9-4946-9097-db8917721781/workflows/040343c7-5730-4c4f-a471-447786e069ad",children:"Callable DYN Operations"}),'\ninside the customer\'s solution instance, which then proceeds to process the record.\nFurther information about this workflow is located in the section labeled "Workflow: Callable DYN Operations".']}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:["Records sync from Microsoft Dynamics 365 to HubSpot on a scheduled basis. This is done inside the workflow\n",(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces/177a4f41-b202-4da0-a910-ddd01e360df3/projects/d7c97bd2-c7c9-4946-9097-db8917721781/workflows/6e8617c6-3612-4896-9c35-9e36f266b54d",children:"Dynamics Scheduler"}),"\ninside the customer's solution instance. That workflow runs a script which checks Dynamics for new records and sends\nthem to the webhook titled ",(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces/177a4f41-b202-4da0-a910-ddd01e360df3/projects/d7c97bd2-c7c9-4946-9097-db8917721781/workflows/90bb4761-298a-40ed-9bd3-3b0a5f6cf90e",children:"Dynamics Scheduled Operations"}),"\nin the customer's solution instance, which then forwards the record to the workflow ",(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces/177a4f41-b202-4da0-a910-ddd01e360df3/projects/d7c97bd2-c7c9-4946-9097-db8917721781/workflows/040343c7-5730-4c4f-a471-447786e069ad",children:"Callable DYN Operations"})]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.h2,{id:"how-do-we-know-if-a-customer-is-using-webhooks-or-the-scheduler",children:[(0,o.jsx)(t.a,{"aria-label":"Link to this section",className:"anchor",href:"#how-do-we-know-if-a-customer-is-using-webhooks-or-the-scheduler",children:(0,o.jsx)(t.span,{className:"icon icon-link"})}),"How do we know if a customer is using webhooks or the scheduler?"]}),"\n",(0,o.jsxs)(t.p,{children:["The JsonConfig for the customer will indicate this. There will be a section for the object mapping labeled ",(0,o.jsx)(t.strong,{children:"webhooks"}),".\nFor customers who are on the scheduler, it will look something like this:"]}),"\n",(0,o.jsx)(t.figure,{"data-rehype-pretty-code-figure":"",children:(0,o.jsx)(t.pre,{style:{backgroundColor:"#282A36",color:"#F8F8F2"},tabIndex:"0","data-language":"json","data-theme":"dracula",raw:'{\n  "webhooks": {\n    "create": true,\n    "update": false\n  }\n}',children:(0,o.jsxs)(t.code,{raw:'{\n  "webhooks": {\n    "create": true,\n    "update": false\n  }\n}',"data-language":"json","data-theme":"dracula",style:{display:"grid"},children:[(0,o.jsx)(t.span,{"data-line":"",children:(0,o.jsx)(t.span,{style:{color:"#F8F8F2"},children:"{"})}),"\n",(0,o.jsxs)(t.span,{"data-line":"",children:[(0,o.jsx)(t.span,{style:{color:"#8BE9FE"},children:'  "'}),(0,o.jsx)(t.span,{style:{color:"#8BE9FD"},children:"webhooks"}),(0,o.jsx)(t.span,{style:{color:"#8BE9FE"},children:'"'}),(0,o.jsx)(t.span,{style:{color:"#FF79C6"},children:":"}),(0,o.jsx)(t.span,{style:{color:"#F8F8F2"},children:" {"})]}),"\n",(0,o.jsxs)(t.span,{"data-line":"",children:[(0,o.jsx)(t.span,{style:{color:"#8BE9FE"},children:'    "'}),(0,o.jsx)(t.span,{style:{color:"#8BE9FD"},children:"create"}),(0,o.jsx)(t.span,{style:{color:"#8BE9FE"},children:'"'}),(0,o.jsx)(t.span,{style:{color:"#FF79C6"},children:":"}),(0,o.jsx)(t.span,{style:{color:"#BD93F9"},children:" true"}),(0,o.jsx)(t.span,{style:{color:"#F8F8F2"},children:","})]}),"\n",(0,o.jsxs)(t.span,{"data-line":"",children:[(0,o.jsx)(t.span,{style:{color:"#8BE9FE"},children:'    "'}),(0,o.jsx)(t.span,{style:{color:"#8BE9FD"},children:"update"}),(0,o.jsx)(t.span,{style:{color:"#8BE9FE"},children:'"'}),(0,o.jsx)(t.span,{style:{color:"#FF79C6"},children:":"}),(0,o.jsx)(t.span,{style:{color:"#BD93F9"},children:" false"})]}),"\n",(0,o.jsx)(t.span,{"data-line":"",children:(0,o.jsx)(t.span,{style:{color:"#F8F8F2"},children:"  }"})}),"\n",(0,o.jsx)(t.span,{"data-line":"",children:(0,o.jsx)(t.span,{style:{color:"#F8F8F2"},children:"}"})})]})})}),"\n",(0,o.jsx)(t.p,{children:"This tells the integration to configure the customer's SyncSmart solution package in line with the webhook settings we want.\nIn this example, webhooks are sent when Dynamics records are created, but not when they are updated. Therefore, customers\nwho are on the scheduler will have a JsonConfig that looks like this example, because we still want to process new records\nimmediately (so their typical configuration is a hybrid of both the webhook and the scheduler)."}),"\n",(0,o.jsxs)(t.p,{children:["You can also check the status of a customer's webhooks by calling the ",(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces
1/177a4f41-b202-4da0-a910-ddd01e360df3/projects/d7c97bd2-c7c9-4946-9097-db8917721781/workflows/fbe3e3b3-25c9-42ac-86d0-79fab022df48",children:"Metadata HS+DYN"}),"\nworkflow in the customer's solution instance for some ",(0,o.jsx)(t.code,{children:"record_type"})," in the query string.\nEach field will have a ",(0,o.jsx)(t.code,{children:'{"webhook": ...}'})," object that follows the same format described above."]}),"\n",(0,o.jsxs)(t.h2,{id:"workflow-callable-dyn-operations",children:[(0,o.jsx)(t.a,{"aria-label":"Link to this section",className:"anchor",href:"#workflow-callable-dyn-operations",children:(0,o.jsx)(t.span,{className:"icon icon-link"})}),"Workflow: Callable DYN Operations"]}),"\n",(0,o.jsx)("a",{href:"https://app.hubspot.com/api/filemanager/api/v2/files/195973468994/signed-url-redirect?portalId=74005",target:"_blank",rel:"noopener noreferrer",children:"View Callable DYN Operations Screenshot"}),"\n",(0,o.jsx)(t.p,{children:'This is the workflow that handles the raw record coming from Microsoft Dynamics 365. It prepares the record for a sync\nto HubSpot by "massaging" the incoming data with extra data, such as:'}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"the labels associated with any dropdowns or lookup fields"}),"\n",(0,o.jsx)(t.li,{children:"information about the Microsoft Dynamics 365 user assigned as the record owner"}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["The workflow takes this massaged data and sends it to the appropriate workflow for the object type.\nFor example, if an opportunity was updated by the customer in Microsoft Dynamics 365 on a field that syncs\nto HubSpot, then the record will be sent on to the workflow titled ",(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces/177a4f41-b202-4da0-a910-ddd01e360df3/projects/d7c97bd2-c7c9-4946-9097-db8917721781/workflows/9e9011f2-e5c2-4ecd-bc4e-d968446c5a63?steps=script-12",children:"DYN Opportunities to HS Deals"}),"."]}),"\n",(0,o.jsxs)(t.h2,{id:"workflow-dyn-opportunities-to-hs-deals",children:[(0,o.jsx)(t.a,{"aria-label":"Link to this section",className:"anchor",href:"#workflow-dyn-opportunities-to-hs-deals",children:(0,o.jsx)(t.span,{className:"icon icon-link"})}),"Workflow: DYN Opportunities to HS Deals"]}),"\n",(0,o.jsx)(t.p,{children:"Though this particular workflow only syncs opportunities, you can refer to this documentation for all object syncs in the\nMicrosoft Dynamics 365 to HubSpot direction. The general concepts are the same, and much of the code is repeated."}),"\n",(0,o.jsxs)(t.h3,{id:"step-0-look-up-the-hubspot-record-id",children:[(0,o.jsx)(t.a,{"aria-label":"Link to this section",className:"anchor",href:"#step-0-look-up-the-hubspot-record-id",children:(0,o.jsx)(t.span,{className:"icon icon-link"})}),"Step 0. Look up the HubSpot record ID"]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.em,{children:"New"}),": Before this step executes, Tray data storage is checked to see if the record has already started processing in the past\n5 minutes. If so, we'll wait until the record is no longer locked (up to 10 minutes). This prevents duplicate deal records\nfrom getting created in HubSpot."]}),"\n",(0,o.jsxs)(t.p,{children:["The workflow begins by checking if this record has already synced to HubSpot. It does this by checking Tray internal storage\nfor a key like ",(0,o.jsx)(t.code,{children:"DynamicsIntegration_opportunity_abcabc123_hs_deal"}),". If that key exists, then we know that we've already synced\nthe opportunity to HubSpot, so the integration will update the deal with that ID. If the key doesn't exist, a new record\nwill get created."]}),"\n",(0,o.jsx)("a",{href:"https://app.hubspot.com/api/filemanager/api/v2/files/195965186941/signed-url-redirect?portalId=74005",target:"_blank",rel:"noopener noreferrer",children:"View DYN Opportunities to HS Deals Screenshot #0"}),"\n",(0,o.jsxs)(t.h3,{id:"step-1-run-applyfilterv2-and-the-mapping-script",children:[(0,o.jsx)(t.a,{"aria-label":"Link to this section",className:"anchor",href:"#step-1-run-applyfilterv2-and-the-mapping-script",children:(0,o.jsx)(t.span,{className:"icon icon-link"})}),"Step 1. Run ",(0,o.jsx)(t.code,{children:"applyFilterV2"})," and the mapping script"]}),"\n",(0,o.jsx)(t.p,{children:"This integration supports user-defined filters in the Dynamics to HubSpot direction. These filters can be entered in one of two ways:"}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"otherFilter"})," - raw JavaScript code that gets evaluated to see if the record matches the customer's sync criteria"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"otherFilterV2"})," - a JSON object, saved by the SyncSmart UI, that corresponds to a user's sync criteria"]}),"\n"]}
1),"\n",(0,o.jsxs)(t.p,{children:["We support both for compatibility reasons. This step is where the ",(0,o.jsx)(t.code,{children:"otherFilterV2"}),' gets evaluated. If the opportunity does not\nmatch the filter, it will be discarded now. (Remember, when we discard a record, we need to ensure that is no longer\nflagged as "In use?". This is done by resetting the appropriate Tray data storage value.)\nThen, the mapping script converts the Dynamics data into HubSpot deal property values.']}),"\n",(0,o.jsx)("a",{href:"https://app.hubspot.com/api/filemanager/api/v2/files/195964899760/signed-url-redirect?portalId=74005",target:"_blank",rel:"noopener noreferrer",children:"View DYN Opportunities to HS Deals Screenshot #1"}),"\n",(0,o.jsxs)(t.h3,{id:"step-2-call-hubspot-then-call-external-ids-hsdyn",children:[(0,o.jsx)(t.a,{"aria-label":"Link to this section",className:"anchor",href:"#step-2-call-hubspot-then-call-external-ids-hsdyn",children:(0,o.jsx)(t.span,{className:"icon icon-link"})}),"Step 2. Call HubSpot, then call External IDs HS+DYN"]}),"\n",(0,o.jsxs)(t.p,{children:["It's now time to take the deal property values and create or update the HubSpot deal (depending on whether or not this is a new record).\nThe call to the HubSpot API is made here. Then, we call ",(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces/177a4f41-b202-4da0-a910-ddd01e360df3/projects/d7c97bd2-c7c9-4946-9097-db8917721781/workflows/edd80cde-2a91-469d-a048-e3d3ccec30a4?steps=script-1",children:"External IDs HS+DYN"}),"\nto save the ID of the HubSpot record to Tray data storage. Additionally, an entry is made in the ",(0,o.jsx)(t.code,{children:"syncLogger"})," collection\nby the ",(0,o.jsx)(t.a,{href:"https://github.com/smart-clients/syncsmart-solutions/blob/tGold/src/HubSpot_Dynamics/HubSpot%20Dynamics%20Solution/workflow_External-IDs-HS%2BDYN/ffSaveXToY.ts",children:"ffSaveXtoY.ts"}),"\nscript inside ",(0,o.jsx)(t.strong,{children:"External IDs HS+DYN"}),"; this is when the deal create/update is logged in the customer-facing logger.\nRegardless of whether the HubSpot calls fails or succeeds, this is when we mark the record as no longer in use (by deleting the\nappropriate Tray data storage variable)."]}),"\n",(0,o.jsx)("a",{href:"https://app.hubspot.com/api/filemanager/api/v2/files/195965186937/signed-url-redirect?portalId=74005",target:"_blank",rel:"noopener noreferrer",children:"View DYN Opportunities to HS Deals Screenshot #2"}),"\n",(0,o.jsxs)(t.h3,{id:"step-3-associate-deal-with-companycontacts",children:[(0,o.jsx)(t.a,{"aria-label":"Link to this section",className:"anchor",href:"#step-3-associate-deal-with-companycontacts",children:(0,o.jsx)(t.span,{className:"icon icon-link"})}),"Step 3. Associate Deal with Company/Contacts"]}),"\n",(0,o.jsx)("a",{href:"https://app.hubspot.com/api/filemanager/api/v2/files/195973481120/signed-url-redirect?portalId=74005",target:"_blank",rel:"noopener noreferrer",children:"View DYN Opportunities to HS Deals Screenshot #3"}),"\n",(0,o.jsxs)(t.h2,{id:"workflow-hubspot-scheduled-operations",children:[(0,o.jsx)(t.a,{"aria-label":"Link to this section",className:"anchor",href:"#workflow-hubspot-scheduled-operations",children:(0,o.jsx)(t.span,{className:"icon icon-link"})}),"Workflow: HubSpot Scheduled Operations"]}),"\n",(0,o.jsx)(t.p,{children:"This workflow runs every 5 minutes. It syncs records that are eligible to sync from HubSpot to Microsoft Dynamics 365.\nIt does this by calling the appropriate workflow for each object sync that is enabled in the HubSpot ➡️ Microsoft Dynamics 365 direction:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces/177a4f41-b202-4da0-a910-ddd01e360df3/projects/d7c97bd2-c7c9-4946-9097-db8917721781/workflows/236fcf48-03c5-4e7e-982f-72f0cebd166e",children:"HS to DYN Lead/Contact"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces/177a4f41-b202-4da0-a910-ddd01e360df3/projects/d7c97bd2-c7c9-4946-9097-db8917721781/workflows/8b6b231e-00ae-40a4-aaec-239407da6e0c",children:"HS Company to DYN Account"})}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"https://app.tray.io/workspaces
1/177a4f41-b202-4da0-a910-ddd01e360df3/projects/d7c97bd2-c7c9-4946-9097-db8917721781/workflows/463fd64c-05b6-45f1-bbbc-83321f255145",children:"HS Deal to DYN Opportunity"})}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:"Remember, we sync both leads and contacts in Microsoft Dynamics 365 to contacts in HubSpot.\nWhether a HubSpot contact syncs to a lead or contact in Dynamics depends on:"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Tray config vars"}),"\n",(0,o.jsxs)(t.li,{children:["the value of property ",(0,o.jsx)(t.code,{children:"ss_dyn_entitytype"})," on the HubSpot contact record. See the file ",(0,o.jsx)(t.a,{href:"https://github.com/smart-clients/syncsmart-solutions/blob/tGold/src/HubSpot_Dynamics/HubSpot%20Dynamics%20Solution/workflow_HS-Contact-to-DYN-Lead_Contact/OwnerEmailEntityMapping.ts",children:"OwnerEmailEntityMapping.ts"})," for the full details\non how it is determined which type of object a HubSpot contact should sync to in Microsoft Dynamics 365."]}),"\n"]})]})}function c(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,o.jsx)(i,{...e,children:(0,o.jsx)(l,{...e})})}},64324:(e,t,s)=>{"use strict";s.d(t,{A:()=>S});var o=s(74848),n=s(96540),a=s(32297),r=s(69969),i=s(9605),l=s(12070),c=s(44814),d=s(2618),h=s(27414),p=s(8348),u=s(71135),f=s(86715),b=s(19157),w=s(98530);let m=e=>!!(e.label&&e.path),x=e=>Object.values(e).flatMap(e=>m(e)?[e]:x(e)),y=e=>{let{tree:t}=e,s=(0,f.useRouter)(),{session:a}=n.useContext(b.D);return(0,o.jsx)(o.Fragment,{children:Object.entries(t).map(e=>{let[t,n]=e;return m(n)?(null==a?void 0:a.isAdmin)||!n.adminOnly?(0,o.jsx)(u.y,{onClick:()=>{s.push(n.path).catch(e=>console.error(e))},itemId:t,label:n.label},t):null:(0,o.jsx)(u.y,{itemId:t,label:(0,w.UD)(t),children:(0,o.jsx)(y,{tree:n})},t)})})};function j(e){let{tree:t,boxSx:s={minHeight:352,minWidth:250}}=e,a=(0,f.useRouter)(),[i,l]=n.useState(a.pathname.split("/").filter(Boolean));return(0,o.jsx)(r.A,{sx:s,children:(0,o.jsx)(p.G,{multiSelect:!0,selectedItems:a.pathname.split("/").filter(Boolean),onItemExpansionToggle:(e,t,s)=>{l(e=>s?[...e,t]:e.filter(e=>e!==t))},expandedItems:i,children:(0,o.jsx)(y,{tree:t})})})}let g={features:{label:"Features",path:"/docs"},products:{Dynamics:{index:{label:"General Info and Usage",path:"/docs/products/Dynamics"},internal:{label:"Internal",path:"/docs/products/Dynamics/internal",adminOnly:!0}},portals:{general_info_and_usage:{label:"General Info and Usage",path:"/docs/products/portals"},faq:{label:"FAQ",path:"/docs/products/portals/faq"},configurations:{label:"Configurations",path:"/docs/products/portals/configurations"},"custom-and-ai-filters":{label:"Custom and AI Filters",path:"/docs/products/portals/custom-and-ai-filters"},clients:{adminOnly:!0,label:"Clients",path:"/docs/products/portals/clients"}},snowflake:{label:"Snowflake",path:"/docs/products/snowflake"},netsuite:{general_info:{label:"General Info",path:"/docs/products/netsuite"},"prereqs-for-install":{label:"Prerequisites for Installation",path:"/docs/products/netsuite/prereqs-for-install"},"authenticating-with-netsuite":{label:"Authenticating with NetSuite",path:"/docs/products/netsuite/authenticating-with-netsuite"},"installing-netsuite-bundle":{label:"Installing NetSuite Bundle",path:"/docs/products/netsuite/installing-netsuite-bundle"},"configuring-your-data-mappings":{label:"Configuring Your Data Mappings",path:"/docs/products/netsuite/configuring-your-data-mappings"},"for-support-team":{label:"For Support Team",path:"/docs/products/netsuite/for-support-team",adminOnly:!0}}},tools:{overview:{label:"Overview",path:"/docs/tools"},record_generator:{label:"Record Generator",path:"/docs/tools/record-generator",adminOnly:!0},field_maps:{"field-maps-overview":{label:"Overview",path:"/docs/tools/field_maps/field-maps-overview"},"field-maps-internal":{label:"Internal",path:"/docs/tools/field_maps/field-maps-internal",adminOnly:!0}}}};function k(e){let{children:t}=e,{session:s}=n.useContext(b.D),a=(0,f.useRouter)();return(0,o.jsxs)(r.A,{sx:{display:"flex",overflowX:"hidden"},children:[(0,o.jsx)(l.Ay,{}),(0,o.jsx)(c.A,{position:"fixed",sx:{width:"calc(100% - ".concat(300,"px)"),ml:"".concat(300,"px")}
1,children:(0,o.jsx)(d.A,{})}),(0,o.jsxs)(i.Ay,{sx:{width:300,flexShrink:0,"& .MuiDrawer-paper":{width:300,boxSizing:"border-box",overflowX:"hidden"}},variant:"permanent",anchor:"left",children:[(0,o.jsx)(d.A,{}),(0,o.jsx)(d.A,{children:(0,o.jsx)(h.A,{variant:"h6",noWrap:!0,component:"div",children:"Documentation"})}),(0,o.jsx)(j,{tree:g})]}),!(null==s?void 0:s.isAdmin)&&x(g).find(e=>e.path===a.pathname&&e.adminOnly)?(0,o.jsxs)("div",{children:["Sorry, you don't have access to this page"," "]}):(0,o.jsx)(r.A,{component:"main",sx:{flexGrow:1},children:t})]})}function S(e){let{children:t}=e;return(0,o.jsx)(a.A,{children:(0,o.jsx)(k,{children:t})})}},76170:(e,t,s)=>{"use strict";s.d(t,{R:()=>h});var o=s(74848),n=s(29965),a=s.n(n),r=s(96540),i=s(62189),l=s(50340),c=s(49148);let d=e=>{let{sx:t,text:s}=e,[n,a]=(0,r.useState)(!1),d=async()=>{await navigator.clipboard.writeText(s),a(!0),setTimeout(()=>{a(!1)},1e4)};return(0,o.jsx)(i.A,{startIcon:n?(0,o.jsx)(c.A,{}):(0,o.jsx)(l.A,{}),sx:t,disabled:n,onClick:()=>{d().catch(console.error)},size:"small",children:n?"Copied":"Copy"})};function h(e){return{img:e=>(0,o.jsx)(a(),{sizes:"100vw",width:500,height:500,style:{width:"100%",height:"auto"},...e}),a:e=>(0,o.jsx)("a",{...e,className:"text-blue-400 hover:underline"}),pre:e=>{let{children:t,raw:s,...n}=e;return(0,o.jsxs)("pre",{...n,className:"relative m-0 px-0 py-1",children:[s&&(0,o.jsx)(d,{sx:{right:"1px",padding:1,display:"flex","margin-top":"2px","margin-right":"8px",position:"absolute"},text:s}),t]})},...e}}}},e=>{var t=t=>e(e.s=t);e.O(0,[5051,8183,220,5972,8530,636,6593,8792],()=>t(80148)),_N_E=e.O()}]);

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.