PageSourceSearch

https://odi.strategyn.com/static/js/66.00eea286.chunk.js

js strategyn.com collected 2026-10-02 04:26:13 UTC 6,714 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkcenterpiece_ui=globalThis.webpackChunkcenterpiece_ui||[]).push([[66],{1850(e,a,s){s.r(a),s.d(a,{default:()=>h});var t=s(9950),r=s(601),i=s(5234),n=s(8182),o=s(2203),d=s(2585),c=s(7797),l=s(7956),u=s(1848),m=s(4065);const p=s.p+"static/media/needs-tour-img.a2f7c41c56051687a850.gif";var w=s(8282),g=s(4414);function h(){const[e,a]=(0,t.useState)(!1),[s,h]=t.useState(!0),[f,v]=t.useState(""),[N,_]=t.useState((0,l.A)()),[y,A]=t.useState(!1),D=t.useRef(null),{data:S,refetch:x}=(0,r.D6)();(0,t.useEffect)(()=>{setTimeout(()=>{h(!1)},1e3)},[]),(0,t.useEffect)(()=>{const e=e=>{e.origin===window.location.origin&&("JTBD_NEEDS_STATE_CHANGED"!==e.data||y||A(!0))},a=e=>{y&&(e.preventDefault(),e.returnValue="")};return window.addEventListener("message",e),window.addEventListener("beforeunload",a),()=>{window.removeEventListener("message",e),window.removeEventListener("beforeunload",a)}},[y]),(0,t.useEffect)(()=>{!function(){const e=navigator.userAgent||navigator.vendor;/android/i.test(e)||/iPad|iPhone|iPod/.test(e)&&!window.MSStream?a(!0):a(!1)}()},[]);const j=(e,a)=>{var s;if(!e||!a)return;const t=a.find(a=>a.docName===e);t?(null===(s=window.needs_framework)||void 0===s||s.setNeedsStates(t.goals,t.vertical,JSON.parse(t.states)),_(t.uuid),A(!1)):k()},k=()=>{window.location.reload()};return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(d.A,{currentDocName:null!==f&&void 0!==f?f:void 0,docList:(null===S||void 0===S?void 0:S.map(e=>({id:e.docName,name:e.docName})))||[],onNew:k,onOpen:e=>{j(e,S)},onSave:async e=>{try{var a;const s=null===(a=window.needs_framework)||void 0===a?void 0:a.getNeedsStates();if(!s)throw new Error("No data available");if(!f)return;await(new u.A).saveNeedsData(N,f,s.goals,s.vertical,JSON.stringify(s.states)),e(!0),x(),A(!1)}catch(s){try{await(new w.A).log({event:"failed_doc_io",event_detail:"Needs Doc - save",resource_id:f,json_misc_data:JSON.stringify({docUUID:N}),err_message:s.message||"n/a"})}catch{}e(!1),console.log(s);const a=c.A.is("permission-denied",s)?"Could not save data. Please check if your membership or trial has expired.":void 0;c.A.handle(s,{overrideMessage:a,style:{marginTop:"20px"}})}},onSaveCopy:async(e,a)=>{try{await(new u.A).saveCopyNeedsDoc(e,a);const s=await x();return v(a),A(!1),j(a,s.data),!0}catch(s){try{await(new w.A).log({event:"failed_doc_io",resource_id:f,event_detail:"Needs Doc - save copy",json_misc_data:JSON.stringify({docUUID:N,oldName:e,newName:a}),err_message:s.message||"n/a"})}catch{}console.log(s);const t=c.A.is("permission-denied",s)?"Could not save copy of data. Please check if your membership or trial has expired.":void 0;return c.A.handle(s,{overrideMessage:t,style:{marginTop:"20px"}}),!1}},onSetDocName:v,onRename:async(e,a)=>{try{return await(new u.A).renameNeedsDoc(e,a),x(),!0}catch(s){try{await(new w.A).log({event:"failed_doc_io",resource_id:f,event_detail:"Needs Doc - rename",json_misc_data:JSON.stringify({docUUID:N,oldName:e,newName:a}),err_message:s.message||"n/a"})}catch{}console.log(s);const t=c.A.is("permission-denied",s)?"Could not rename data. Please check if your membership or trial has expired.":void 0;return c.A.handle(s,{overrideMessage:t,style:{marginTop:"20px"}}),!1}},onDelete:async e=>{try{return await(new u.A).deleteNeedsDoc(e),f===e&&(A(!1),setTimeout(()=>{window.location.reload()})),x(),!0}catch(a){try{await(new w.A).log({event:"failed_doc_io",resource_id:e,event_detail:"Needs Doc - delete",json_misc_data:JSON.stringify({docUUID:N}),err_message:a.message||"n/a"})}catch{}console.log(a);const s=c.A.is("permission-denied",a)?"Could not delete data. Please check if your membership or trial has expired.":void 0;return c.A.handle(a,{overrideMessage:s,style:{marginTop:"20px"}}),!1}},customOptions:(0,g.jsxs)(i.A,{children:[(0,g.jsxs)(n.A,{size:"small",className:"button screenshot no-capture",onClick:async()=>{try{var e;null===(e=window.needs_framework)||void 0===e||e.captureScreenshot()}catch(a){try{await(new w.A).log({event:"failed_doc_io",resource_id:f,event_detail:"Needs Doc - screenshot",json_misc_data:JSON.stringify({docUUID:N}),err_message:a.message||"n/a"})}catch{}}},title:"Capture and Save screenshot in Downloads folder",children:[(0,g.jsx)(o.A,{type:"solid",size:"14",icon:"fa-camera"})," Capture Screenshot"]}),(0,g.jsx)("div",{className:"v-divider",children:(0,g.jsx)(o.A,{type:"regular",size:"14",icon:"fa-pipe"})}),(0,g.jsx)(m.v,{tourTitle:"JTBD Needs Framework",tourText:"Let's start with a quick tour of the Jobs-to-be-done Needs Framework.",tourImage:p,localStorageKey:"needsTourDismissed",iframeSrc:"https://www.figma.com/embed?embed_host=share&url=https%3A%2F%2Fwww.figma.com%2Fproto%2FsPd02YsBE7sh64WwTPojjk%2FProduct-tour%3Fpage-id%3D270%253A48273%26type%3Ddesign%26node-id%3D727-4262%26viewport%3D1239%252C1416%252C0.23%26t%3DTPf6HUQidkFcceSm-1%26scaling=scale-down-width%26hide-ui%3D1",iframeTitle:"Needs Framework Product Tour",iframeHeight:"660"})]}),hasUnsavedChanges:y}),e&&(0,g.jsx)("div",{className:"sticky-banner",children:(0,g.jsxs)("p",{children:[(0,g.jsx)(o.A,{type:"solid",size:"14",icon:"fa-exclamation-circle"})," Tools are optimized for desktop use only."]})}),s?(0,g.jsx)("div",{className:"loading",children:(0,g.jsx)(o.A,{type:"regular",size:"36",icon:"fa-spinner"})}):(0,g.jsx)("iframe",{id:"needs_iframe",title:"Needs Framework",name:"needs_framework",src:"needs_framework/index.html",width:"100%",ref:D})]})}}
1,7788(e,a,s){s.d(a,{A:()=>l});var t=s(9950),r=s(9398),i=s(4613);s(7119);const n="default",o="success",d="warning",c="danger";class l extends t.Component{getSizeClassName(e){switch(e){case"small":return"ant-input-sm";case"medium":default:return"";case"large":return"ant-input-lg";case"xlarge":return"ant-input-xl"}}getTypeClassName(e){switch(e){case n:return"st-input-default";case o:return"st-input-success";case d:return"st-input-warning";case c:return"st-input-danger";default:return"st-input-default"}}getWrapperClassName(e){switch(e){case n:return"st-input-default-wrapper";case o:return"st-input-success-wrapper";case d:return"st-input-warning-wrapper";case c:return"st-input-danger-wrapper";default:return"st-input-default-wrapper"}}render(){const{type:e,label:a,direction:s,required:t,caption:n,className:o,size:d,...c}=this.props;return(0,r.a)("span",{className:`st-input-wrapper ${this.getWrapperClassName(e)} ${"horizontal"===s?"direction-horizontal":"direction-vertical"} ${t?"required":""} ${o||""}`,children:[a&&(0,r.j)("small",{className:"input-label",children:a}),(0,r.a)("span",{className:"input-with-caption",children:[(0,r.j)(i.I,{...c,className:`${this.getTypeClassName(e)}
1 ${this.getSizeClassName(d)} `}),n&&(0,r.j)("small",{className:"input-caption",children:n})]})]})}}}}]);

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.