@clickview/lite 0.56.5-rc.1 → 0.56.5-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bundles.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "appBundle": "bundle-9d6e5ac6ba.min.js",
2
+ "appBundle": "bundle-8aa594baf5.min.js",
3
3
  "cssBundle": "lite-app-475c8fbc8b.css",
4
4
  "polyfillBundle": "polyfills-365f92d668.min.js"
5
5
  }
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4690],{83657:(e,t,n)=>{n.d(t,{e:()=>s});var a=n(32735),r=n(91967),i=n(10874),o=n(76177),l=n(42735),c=n(86509);function s(e){var t=a.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],s=[];t.forEach((function(e){e.button?n.push(e):s.push(e)}));var m="d-flex";return e.className&&(m+=" ".concat(e.className)),n.length||s.length?a.createElement("div",{className:m},n.length?n.map((function(t,n){return a.createElement(a.Fragment,{key:n},function(){if(t.label){var n=r.q.isFunction(t.label)?t.label:function(){return a.createElement(a.Fragment,null,t.label)};return a.createElement(l.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},n())}var c=a.createElement(i.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize,ariaLabel:t.tooltip});return t.tooltip?a.createElement(o.u,{title:t.tooltip,spanHack:!0},c):c}())})):a.createElement(a.Fragment,null),e.sortComponent&&e.sortComponent,s.length?a.createElement(c.m,{actions:s,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):a.createElement(a.Fragment,null)):a.createElement(a.Fragment,null)}},86509:(e,t,n)=>{n.d(t,{m:()=>f});var a=n(32735),r=n(91967),i=n(81886),o=n(45157),l=n(49985),c=n(36848),s=n(83914),m=n(76177),u=n(35223);const d={dropdownToggle:"UCAnJ"};function p(){return a.createElement(a.Fragment,null,a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function g(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function v(e){var t=r.q.isFunction(e.action.label)?e.action.label:function(){return a.createElement(a.Fragment,null,e.action.label)};if(e.action.appLink)return a.createElement(c.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:g(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&a.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),a.createElement("span",{className:"align-middle"},t()));function n(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&l.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&i.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?a.createElement("a",{className:g(e.action.className),onClick:n,href:e.action.href},e.action.svgName&&a.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),a.createElement("span",{className:"align-middle"},t())):a.createElement("span",{className:"cursor-pointer ".concat(g(e.action.className)),onClick:n,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&n(e)}},e.action.svgName&&a.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function f(e){if(!e.actions||!e.actions.length)return a.createElement(a.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),n="dropdown";e.className&&(n+=" ".concat(e.className));var r,i="actions-dropdown-".concat(o.Y.getRandomInt()),l="dropdown-toggle px-0 ".concat(d.dropdownToggle);return e.dropdownToggleClassName&&(l+=" ".concat(e.dropdownToggleClassName)),a.createElement("div",{className:n},a.createElement("button",{className:l,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:t?e.fetchMore:null},a.createElement(s.x,{svgName:u.vn.More,size:e.dropdownToggleSvgSize})),a.createElement("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":i},t?a.createElement(p,null):e.actions.map((function(e,t){var n=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?a.createElement("li",{key:t},n&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(m.u,{title:e.tooltip,spanHack:!0},a.createElement(v,{action:e}))):a.createElement("li",{key:t},n&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(v,{action:e}))}))))}f.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:s.S.Small}},80181:(e,t,n)=>{n.d(t,{Z:()=>y});var a=n(32735),r=n(42648),i=n(11607),o=n(83914),l=n(83345),c=n(28972),s=n(40424),m=n(93264),u=n(35223),d=n(86572);const p={timeTag:"ShZvf",hide:"FHzDr",time:"JDp5N",type:"AzIWg",question:"UhEYq",deleteContainer:"wBqoo",delete:"OAQQu",correctness:"W5sR9",selected:"tfrDf",row:"sGk59"};var g="shared.interactiveQuestions";function v(e){var t=e.interaction;switch((0,e.getCorrectness)(t)){case c.w.Correct:return a.createElement("span",{className:"text-success"},a.createElement(o.x,{size:o.S.Medium,svgName:u.vn.Check}));case c.w.Incorrect:return a.createElement("span",{className:"text-danger"},a.createElement(o.x,{size:o.S.Medium,svgName:u.vn.Close}));case c.w.AwaitingMarking:return a.createElement("span",{className:"text-secondary italic"},a.createElement("i",null,a.createElement(l.x,{namespace:g,phrase:"pending"})));case c.w.UnAnswered:return a.createElement("button",{className:"btn btn-outline-dark"},a.createElement(l.x,{namespace:g,phrase:"answer"}));case c.w.Answered:return a.createElement("span",{className:"text-secondary italic"},a.createElement("i",null,a.createElement(l.x,{namespace:g,phrase:"answered"})));case c.w.NotApplicable:return a.createElement(a.Fragment,null)}}function f(e){var t=e.interaction,n=e.visibleAt,r=e.selectedInteractionId,l=e.goToTimepoint,c=e.scrollTo,s=e.isFirstInteraction,g=e.hasPlayPageV2,f=t.id.toString()===(null==r?void 0:r.toString()),E=a.useRef();a.useEffect((function(){if(f&&E.current){var e=E.current,t=e.getBoundingClientRect(),n=t.top-e.offsetParent.getBoundingClientRect().top;c(n,t.height)}}),[f]);var y=l?"cursor-pointer":"cursor-default";return a.createElement("div",{ref:E},a.createElement(i.L,{className:"py-2 ".concat(y," ").concat(p.row," ").concat(f?p.selected:""),onClick:f?function(){}:function(){l&&l(t.id)}},g?a.createElement("div",{className:"me-3 d-inline-flex rounded-pill justify-content-center align-items-center text-info fw-semibold bg-light-blue ".concat(p.timeTag," ").concat(s?"":p.hide)},s?m.T.ToDisplayDuration(n):""):a.createElement("span",{className:"".concat(p.time," me-2 ").concat(f?"fw-bold":"")},s?m.T.ToDisplayDuration(n):""),a.createElement(d.y,{interaction:t,showTypeName:!0,typeNameClassName:p.type,questionClassName:p.question}),e.onClickDelete&&a.createElement(i.L,{onClick:function(n){n.stopPropagation(),e.onClickDelete(t.id)},className:"".concat(p.deleteContainer)},a.createElement("span",{className:"text-end ".concat(p.delete)},a.createElement(o.x,{size:o.S.Medium,svgName:u.vn.Delete}))),e.getCorrectness&&a.createElement("span",{className:"text-end ".concat(p.correctness)},a.createElement(v,{interaction:t,getCorrectness:e.getCorrectness}))))}function E(e){var t=e.timepoint,n=e.scrollTo,r=e.onClickDelete,i=e.selectedInteractionId,o=e.getCorrectness,l=e.hasPlayPageV2;function c(n){e.goToTimepoint(t.id,n,t.visibleAt)}return t.interactions?a.createElement(a.Fragment,null,t.interactions.map((function(m,u){return!e.experimentalInteractiveQuestions&&s.IL[m.typeId]?a.createElement(a.Fragment,{key:u}):a.createElement(f,{interaction:m,visibleAt:t.visibleAt,goToTimepoint:e.goToTimepoint&&c,onClickDelete:r,scrollTo:n,selectedInteractionId:i,isFirstInteraction:0===u,getCorrectness:o,key:u,hasPlayPageV2:l})}))):a.createElement(a.Fragment,null)}function y(e){var t=e.interactive,n=e.goToTimepoint,i=e.selectedInteractionId,o=e.maxHeight,l=e.onClickDelete,c=e.getCorrectness,s=e.hasPlayPageV2,m=a.useRef();function u(e,t){if(m.current){var n=m.current.getClientHeight(),a=m.current.getScrollTop(),r=e+a;(r<a||r+t>a+n)&&m.current.scrollTop(r-n/2+t/2)}}var d=n?"border rounded":"";return a.createElement(r.$B,{autoHeight:!0,autoHeightMax:o,className:d,hideTracksWhenNotNeeded:!0,ref:m},a.createElement("div",{className:"px-3 py-1"},t.timepoints.map((function(t,r){return a.createElement(E,{key:r,timepoint:t,goToTimepoint:n,selectedInteractionId:i,scrollTo:u,onClickDelete:l,getCorrectness:c,hasPlayPageV2:s,experimentalInteractiveQuestions:e.experimentalInteractiveQuestions})}))))}},40178:(e,t,n)=>{n.d(t,{x:()=>a});var a=368},28972:(e,t,n)=>{var a;n.d(t,{w:()=>a}),function(e){e[e.Correct=0]="Correct",e[e.Incorrect=1]="Incorrect",e[e.AwaitingMarking=2]="AwaitingMarking",e[e.Answered=3]="Answered",e[e.UnAnswered=4]="UnAnswered",e[e.NotApplicable=5]="NotApplicable"}(a||(a={}))},41630:(e,t,n)=>{n.d(t,{X:()=>C});var a=n(32735),r=n(44645),i=n(17327),o=n.n(i),l=n(56050),c=n(23481),s=n(81886),m=n(2786),u=n(93264),d=n(40424);const p={worksheet:"Bv47P",interaction:"efkgi",timepointCell:"ffoDR",interactionCell:"rKBEu",checkbox:"ilhe4",multipleChoiceAnswer:"TqhFx",shortAnswerTextArea:"voJCM",image:"go2dV",cvLogo:"Z4GOw",copyright:"petLf",illustrationDrawingArea:"iA_Dl"};function g(e){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(e)}function v(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=g(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=g(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==g(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var f=/{([^{}]*)}/g;function E(e){return a.createElement("div",{className:"mb-2"},e.interaction.name)}function y(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("table",null,a.createElement("tbody",null,e.interaction.actionableItems.map((function(e){return a.createElement("tr",{key:e.id},a.createElement("td",null,a.createElement("div",{className:"border ".concat(p.checkbox)})),a.createElement("td",{className:"break-word align-top"},a.createElement("div",{className:p.multipleChoiceAnswer},e.name)))})))))}var h=v(v(v(v(v(v(v({},d.Z9.Annotation,(function(e){return a.createElement("div",{dangerouslySetInnerHTML:{__html:e.interaction.data.annotation}})})),d.Z9.Image,(function(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("img",{className:p.image,src:e.interaction.data.url}))})),d.Z9.MissingWord,(function(e){var t=e.interaction.data.sentence.replace(f,(function(t,n){var a=2*e.interaction.actionableItems.find((function(e){return e.order.toString()===n})).name.length;return Array(a+1).join("_")}));return a.createElement("div",null,t)})),d.Z9.MultipleChoice,y),d.Z9.TrueOrFalse,y),d.Z9.ShortAnswer,(function(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("div",{className:"border w-100 ".concat(p.shortAnswerTextArea)}))})),d.Z9.Illustration,(function(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("div",{className:"w-100 border ".concat(p.illustrationDrawingArea)}))})),b=c.T.encloseNamespace("interactives.printableInteractiveWorksheet");function w(e){var t=h[e.interaction.typeId];return t?a.createElement("tr",{className:p.interaction},a.createElement("td",{className:"align-top ".concat(p.timepointCell)},u.T.ToDisplayDuration(e.visibleAt)),a.createElement("td",{className:"break-word ".concat(p.interactionCell)},a.createElement(t,{interaction:e.interaction}))):a.createElement(a.Fragment,null)}function N(e){return a.createElement(a.Fragment,null,e.interactive.timepoints.map((function(e,t){return e.interactions.map((function(n,r){return a.createElement(w,{key:"".concat(t,":").concat(r),interaction:n,visibleAt:e.visibleAt})}))})))}function k(e){var t=(new Date).getFullYear();return a.createElement("div",{id:e.worksheetElementId,className:p.worksheet},a.createElement("div",{className:"row pb-2"},a.createElement("div",{className:"col-6"},b("name")," ______________________________"),a.createElement("div",{className:"col-6"},b("date")," ______________________________")),a.createElement("h1",null,a.createElement("strong",null,b("questionSheet"),":")," ",e.interactive.name),a.createElement("table",null,a.createElement("tbody",null,a.createElement(N,{interactive:e.interactive}))),a.createElement("div",{className:p.cvLogo},a.createElement(m.$S,null)),e.isClickViewContent&&a.createElement("span",{className:p.copyright},b("copyright",{year:t})))}var _=c.T.encloseNamespace("interactives.utils");function C(e,t,n){var i=document.getElementById("print-region");if(i||s.Q.Ry.throw(new l.H("Could not find print region in layout")),e){var c="printable-interactive-".concat(e.id),m=(0,r.s)(i);m.render(a.createElement("div",{className:"d-none"},a.createElement(k,{worksheetElementId:c,interactive:e,isClickViewContent:t}))),window.setTimeout((function(){o()({printable:c,type:"html",documentTitle:_("worksheetTitle",{interactiveName:e.name}),targetStyles:["*"],style:"@page { size: A4; margin: 1.5cm 0; }",onLoadingEnd:function(){n&&n(),m.unmount()},font_size:"14px"})}),200)}}},74690:(e,t,n)=>{n.r(t),n.d(t,{PreviewQuestionsView:()=>k});var a=n(32735),r=n(23481),i=n(81886),o=n(20354),l=n(28400),c=n(65858),s=n(83657),m=n(80181),u=n(9111),d=n(13876),p=n(40178),g=n(20768),v=n(37802),f=n(35223),E=n(14070),y=n(97291),h=n(41630);const b={printBtn:"VWlur"};function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var N=r.T.encloseNamespace("interactives.previewQuestions");function k(e){var t,n,r,k,_,C=(k=a.useState(!1),_=2,function(e){if(Array.isArray(e))return e}(k)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(k,_)||function(e,t){if(e){if("string"==typeof e)return w(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?w(e,t):void 0}}(k,_)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),T=C[0],I=C[1],S=(0,v.r)(null).experimentalInteractiveQuestions,A=o.a.useBasicFetch(g.b.interactiveMetadata(e.id)),x=o.a.useBasicFetch(A.data?g.b.interactive(A.data.interactiveId):null),D=null;A.data&&(D={id:A.data.id,interactiveId:A.data.interactiveId,name:A.data.name},(null===(t=A.data._parentVideo)||void 0===t?void 0:t.id)&&(D.video={id:A.data._parentVideo.id}),(null===(n=A.data._parentClip)||void 0===n?void 0:n.id)&&(D.clip={id:A.data._parentClip.id}));var F=[{label:N("watchInteractive"),className:"btn btn-outline-dark me-2",svgName:f.vn.Play,button:!0,appLink:{application:y.O.INTERACTIVES,action:E.e.Interactives.VIEW_INTERACTIVE,args:[e.id,l.m.slugify(null===(r=x.data)||void 0===r?void 0:r.name)]},onClick:e.closePopup,analyticsData:D,analyticsOptions:{entity:c.py.Interactive,actionType:c.Vw.Click,location:c.LZ.PreviewInteractiveQuestions,descriptor:c._S.Button}},{label:N("printAsWorksheet"),className:"btn btn-outline-dark ".concat(b.printBtn),svgName:f.vn.Print,button:!0,onClick:function(){var e;I(!0),(0,h.X)(x.data,null===(e=A.data._isClickViewCurated)||void 0===e?void 0:e.value,(function(){return I(!1)}))},showSpinner:T,analyticsData:D,analyticsOptions:{entity:c.py.Interactive,actionType:c.Vw.Print,location:c.LZ.PreviewInteractiveQuestions,workflowPhase:c.eu.Start,eventVersion:c.eq.V2}}];return a.createElement(u.G,{title:N("mainTitle"),closePopup:e.closePopup,showLoadingSpinner:!x.data,size:"lg"},x.data?a.createElement(a.Fragment,null,a.createElement(m.Z,{interactive:x.data,maxHeight:p.x,experimentalInteractiveQuestions:S,goToTimepoint:function(t,n,a){var r;i.Q.C$.trigger({application:y.O.INTERACTIVES,action:E.e.Interactives.VIEW_INTERACTIVE,args:[e.id,l.m.slugify(null===(r=x.data)||void 0===r?void 0:r.name)],params:a?{t:Math.floor(a/1e3)}:null}),e.closePopup()}}),a.createElement(d.u,null,a.createElement(s.e,{actions:F}))):a.createElement(a.Fragment,null))}}}]);
2
- //# sourceMappingURL=4690-4abacf2ea2-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4690],{83657:(e,t,n)=>{n.d(t,{e:()=>s});var a=n(32735),r=n(91967),i=n(10874),o=n(76177),c=n(42735),l=n(86509);function s(e){var t=a.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],s=[];t.forEach((function(e){e.button?n.push(e):s.push(e)}));var m="d-flex";return e.className&&(m+=" ".concat(e.className)),n.length||s.length?a.createElement("div",{className:m},n.length?n.map((function(t,n){return a.createElement(a.Fragment,{key:n},function(){if(t.label){var n=r.q.isFunction(t.label)?t.label:function(){return a.createElement(a.Fragment,null,t.label)};return a.createElement(c.K,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,svgSize:e.dropdownToggleSvgSize,className:t.className,tooltip:t.tooltip,showSpinner:t.showSpinner,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled},n())}var l=a.createElement(i.h,{appLink:t.appLink,href:t.href,onClick:t.onClick,svgName:t.svgName,className:t.className,analyticsData:t.analyticsData,analyticsOptions:t.analyticsOptions,openInNewTab:t.openInNewTab,disabled:t.disabled,showBorder:t.showBorder,customSize:e.customSize,ariaLabel:t.tooltip});return t.tooltip?a.createElement(o.u,{title:t.tooltip,spanHack:!0},l):l}())})):a.createElement(a.Fragment,null),e.sortComponent&&e.sortComponent,s.length?a.createElement(l.m,{actions:s,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):a.createElement(a.Fragment,null)):a.createElement(a.Fragment,null)}},86509:(e,t,n)=>{n.d(t,{m:()=>f});var a=n(32735),r=n(91967),i=n(81886),o=n(45157),c=n(49985),l=n(36848),s=n(83914),m=n(76177),u=n(35223);const d={dropdownToggle:"UCAnJ"};function p(){return a.createElement(a.Fragment,null,a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function g(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function v(e){var t=r.q.isFunction(e.action.label)?e.action.label:function(){return a.createElement(a.Fragment,null,e.action.label)};if(e.action.appLink)return a.createElement(l.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:g(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&a.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),a.createElement("span",{className:"align-middle"},t()));function n(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&c.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&i.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?a.createElement("a",{className:g(e.action.className),onClick:n,href:e.action.href},e.action.svgName&&a.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),a.createElement("span",{className:"align-middle"},t())):a.createElement("span",{className:"cursor-pointer ".concat(g(e.action.className)),onClick:n,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&n(e)}},e.action.svgName&&a.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function f(e){if(!e.actions||!e.actions.length)return a.createElement(a.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),n="dropdown";e.className&&(n+=" ".concat(e.className));var r,i="actions-dropdown-".concat(o.Y.getRandomInt()),c="dropdown-toggle px-0 ".concat(d.dropdownToggle);return e.dropdownToggleClassName&&(c+=" ".concat(e.dropdownToggleClassName)),a.createElement("div",{className:n},a.createElement("button",{className:c,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-label":"More actions dropdown",onClick:t?e.fetchMore:null},a.createElement(s.x,{svgName:u.vn.More,size:e.dropdownToggleSvgSize})),a.createElement("ul",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal","aria-labelledby":i},t?a.createElement(p,null):e.actions.map((function(e,t){var n=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?a.createElement("li",{key:t},n&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(m.u,{title:e.tooltip,spanHack:!0},a.createElement(v,{action:e}))):a.createElement("li",{key:t},n&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(v,{action:e}))}))))}f.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:s.S.Small}},80181:(e,t,n)=>{n.d(t,{Z:()=>y});var a=n(32735),r=n(42648),i=n(11607),o=n(83914),c=n(83345),l=n(28972),s=n(40424),m=n(93264),u=n(35223),d=n(86572);const p={timeTag:"ShZvf",hide:"FHzDr",time:"JDp5N",type:"AzIWg",question:"UhEYq",deleteContainer:"wBqoo",delete:"OAQQu",correctness:"W5sR9",selected:"tfrDf",row:"sGk59"};var g="shared.interactiveQuestions";function v(e){var t=e.interaction;switch((0,e.getCorrectness)(t)){case l.w.Correct:return a.createElement("span",{className:"text-success"},a.createElement(o.x,{size:o.S.Medium,svgName:u.vn.Check}));case l.w.Incorrect:return a.createElement("span",{className:"text-danger"},a.createElement(o.x,{size:o.S.Medium,svgName:u.vn.Close}));case l.w.AwaitingMarking:return a.createElement("span",{className:"text-secondary italic"},a.createElement("i",null,a.createElement(c.x,{namespace:g,phrase:"pending"})));case l.w.UnAnswered:return a.createElement("button",{className:"btn btn-outline-dark"},a.createElement(c.x,{namespace:g,phrase:"answer"}));case l.w.Answered:return a.createElement("span",{className:"text-secondary italic"},a.createElement("i",null,a.createElement(c.x,{namespace:g,phrase:"answered"})));case l.w.NotApplicable:return a.createElement(a.Fragment,null)}}function f(e){var t=e.interaction,n=e.visibleAt,r=e.selectedInteractionId,c=e.goToTimepoint,l=e.scrollTo,s=e.isFirstInteraction,g=e.hasPlayPageV2,f=t.id.toString()===(null==r?void 0:r.toString()),E=a.useRef();a.useEffect((function(){if(f&&E.current){var e=E.current,t=e.getBoundingClientRect(),n=t.top-e.offsetParent.getBoundingClientRect().top;l(n,t.height)}}),[f]);var y=c?"cursor-pointer":"cursor-default";return a.createElement("div",{ref:E},a.createElement(i.L,{className:"py-2 ".concat(y," ").concat(p.row," ").concat(f?p.selected:""),onClick:f?function(){}:function(){c&&c(t.id)}},g?a.createElement("div",{className:"me-3 d-inline-flex rounded-pill justify-content-center align-items-center text-info fw-semibold bg-light-blue ".concat(p.timeTag," ").concat(s?"":p.hide)},s?m.T.ToDisplayDuration(n):""):a.createElement("span",{className:"".concat(p.time," me-2 ").concat(f?"fw-bold":"")},s?m.T.ToDisplayDuration(n):""),a.createElement(d.y,{interaction:t,showTypeName:!0,typeNameClassName:p.type,questionClassName:p.question}),e.onClickDelete&&a.createElement(i.L,{onClick:function(n){n.stopPropagation(),e.onClickDelete(t.id)},className:"".concat(p.deleteContainer)},a.createElement("span",{className:"text-end ".concat(p.delete)},a.createElement(o.x,{size:o.S.Medium,svgName:u.vn.Delete}))),e.getCorrectness&&a.createElement("span",{className:"text-end ".concat(p.correctness)},a.createElement(v,{interaction:t,getCorrectness:e.getCorrectness}))))}function E(e){var t=e.timepoint,n=e.scrollTo,r=e.onClickDelete,i=e.selectedInteractionId,o=e.getCorrectness,c=e.hasPlayPageV2;function l(n){e.goToTimepoint(t.id,n,t.visibleAt)}return t.interactions?a.createElement(a.Fragment,null,t.interactions.map((function(m,u){return!e.experimentalInteractiveQuestions&&s.IL[m.typeId]?a.createElement(a.Fragment,{key:u}):a.createElement(f,{interaction:m,visibleAt:t.visibleAt,goToTimepoint:e.goToTimepoint&&l,onClickDelete:r,scrollTo:n,selectedInteractionId:i,isFirstInteraction:0===u,getCorrectness:o,key:u,hasPlayPageV2:c})}))):a.createElement(a.Fragment,null)}function y(e){var t=e.interactive,n=e.goToTimepoint,i=e.selectedInteractionId,o=e.maxHeight,c=e.onClickDelete,l=e.getCorrectness,s=e.hasPlayPageV2,m=a.useRef();function u(e,t){if(m.current){var n=m.current.getClientHeight(),a=m.current.getScrollTop(),r=e+a;(r<a||r+t>a+n)&&m.current.scrollTop(r-n/2+t/2)}}var d=n?"border rounded":"";return a.createElement(r.$B,{autoHeight:!0,autoHeightMax:o,className:d,hideTracksWhenNotNeeded:!0,ref:m},a.createElement("div",{className:"px-3 py-1"},t.timepoints.map((function(t,r){return a.createElement(E,{key:r,timepoint:t,goToTimepoint:n,selectedInteractionId:i,scrollTo:u,onClickDelete:c,getCorrectness:l,hasPlayPageV2:s,experimentalInteractiveQuestions:e.experimentalInteractiveQuestions})}))))}},40178:(e,t,n)=>{n.d(t,{x:()=>a});var a=368},28972:(e,t,n)=>{var a;n.d(t,{w:()=>a}),function(e){e[e.Correct=0]="Correct",e[e.Incorrect=1]="Incorrect",e[e.AwaitingMarking=2]="AwaitingMarking",e[e.Answered=3]="Answered",e[e.UnAnswered=4]="UnAnswered",e[e.NotApplicable=5]="NotApplicable"}(a||(a={}))},41630:(e,t,n)=>{n.d(t,{X:()=>C});var a=n(32735),r=n(44645),i=n(17327),o=n.n(i),c=n(56050),l=n(23481),s=n(81886),m=n(2786),u=n(93264),d=n(40424);const p={worksheet:"Bv47P",interaction:"efkgi",timepointCell:"ffoDR",interactionCell:"rKBEu",checkbox:"ilhe4",multipleChoiceAnswer:"TqhFx",shortAnswerTextArea:"voJCM",image:"go2dV",cvLogo:"Z4GOw",copyright:"petLf",illustrationDrawingArea:"iA_Dl"};function g(e){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(e)}function v(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=g(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=g(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==g(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var f=/{([^{}]*)}/g;function E(e){return a.createElement("div",{className:"mb-2"},e.interaction.name)}function y(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("table",null,a.createElement("tbody",null,e.interaction.actionableItems.map((function(e){return a.createElement("tr",{key:e.id},a.createElement("td",null,a.createElement("div",{className:"border ".concat(p.checkbox)})),a.createElement("td",{className:"break-word align-top"},a.createElement("div",{className:p.multipleChoiceAnswer},e.name)))})))))}var h=v(v(v(v(v(v(v({},d.Z9.Annotation,(function(e){return a.createElement("div",{dangerouslySetInnerHTML:{__html:e.interaction.data.annotation}})})),d.Z9.Image,(function(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("img",{className:p.image,src:e.interaction.data.url}))})),d.Z9.MissingWord,(function(e){var t=("string"==typeof e.interaction.data?JSON.parse(e.interaction.data).sentence:e.interaction.data.sentence).replace(f,(function(t,n){var a=2*e.interaction.actionableItems.find((function(e){return e.order.toString()===n})).name.length;return Array(a+1).join("_")}));return a.createElement("div",null,t)})),d.Z9.MultipleChoice,y),d.Z9.TrueOrFalse,y),d.Z9.ShortAnswer,(function(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("div",{className:"border w-100 ".concat(p.shortAnswerTextArea)}))})),d.Z9.Illustration,(function(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("div",{className:"w-100 border ".concat(p.illustrationDrawingArea)}))})),b=l.T.encloseNamespace("interactives.printableInteractiveWorksheet");function w(e){var t=h[e.interaction.typeId];return t?a.createElement("tr",{className:p.interaction},a.createElement("td",{className:"align-top ".concat(p.timepointCell)},u.T.ToDisplayDuration(e.visibleAt)),a.createElement("td",{className:"break-word ".concat(p.interactionCell)},a.createElement(t,{interaction:e.interaction}))):a.createElement(a.Fragment,null)}function N(e){return a.createElement(a.Fragment,null,e.interactive.timepoints.map((function(e,t){return e.interactions.map((function(n,r){return a.createElement(w,{key:"".concat(t,":").concat(r),interaction:n,visibleAt:e.visibleAt})}))})))}function k(e){var t=(new Date).getFullYear();return a.createElement("div",{id:e.worksheetElementId,className:p.worksheet},a.createElement("div",{className:"row pb-2"},a.createElement("div",{className:"col-6"},b("name")," ______________________________"),a.createElement("div",{className:"col-6"},b("date")," ______________________________")),a.createElement("h1",null,a.createElement("strong",null,b("questionSheet"),":")," ",e.interactive.name),a.createElement("table",null,a.createElement("tbody",null,a.createElement(N,{interactive:e.interactive}))),a.createElement("div",{className:p.cvLogo},a.createElement(m.$S,null)),e.isClickViewContent&&a.createElement("span",{className:p.copyright},b("copyright",{year:t})))}var _=l.T.encloseNamespace("interactives.utils");function C(e,t,n){var i=document.getElementById("print-region");if(i||s.Q.Ry.throw(new c.H("Could not find print region in layout")),e){var l="printable-interactive-".concat(e.id),m=(0,r.s)(i);m.render(a.createElement("div",{className:"d-none"},a.createElement(k,{worksheetElementId:l,interactive:e,isClickViewContent:t}))),window.setTimeout((function(){o()({printable:l,type:"html",documentTitle:_("worksheetTitle",{interactiveName:e.name}),targetStyles:["*"],style:"@page { size: A4; margin: 1.5cm 0; }",onLoadingEnd:function(){n&&n(),m.unmount()},font_size:"14px"})}),200)}}},74690:(e,t,n)=>{n.r(t),n.d(t,{PreviewQuestionsView:()=>k});var a=n(32735),r=n(23481),i=n(81886),o=n(20354),c=n(28400),l=n(65858),s=n(83657),m=n(80181),u=n(9111),d=n(13876),p=n(40178),g=n(20768),v=n(37802),f=n(35223),E=n(14070),y=n(97291),h=n(41630);const b={printBtn:"VWlur"};function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var N=r.T.encloseNamespace("interactives.previewQuestions");function k(e){var t,n,r,k,_,C=(k=a.useState(!1),_=2,function(e){if(Array.isArray(e))return e}(k)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(k,_)||function(e,t){if(e){if("string"==typeof e)return w(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?w(e,t):void 0}}(k,_)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),T=C[0],I=C[1],S=(0,v.r)(null).experimentalInteractiveQuestions,A=o.a.useBasicFetch(g.b.interactiveMetadata(e.id)),x=o.a.useBasicFetch(A.data?g.b.interactive(A.data.interactiveId):null),D=null;A.data&&(D={id:A.data.id,interactiveId:A.data.interactiveId,name:A.data.name},(null===(t=A.data._parentVideo)||void 0===t?void 0:t.id)&&(D.video={id:A.data._parentVideo.id}),(null===(n=A.data._parentClip)||void 0===n?void 0:n.id)&&(D.clip={id:A.data._parentClip.id}));var F=[{label:N("watchInteractive"),className:"btn btn-outline-dark me-2",svgName:f.vn.Play,button:!0,appLink:{application:y.O.INTERACTIVES,action:E.e.Interactives.VIEW_INTERACTIVE,args:[e.id,c.m.slugify(null===(r=x.data)||void 0===r?void 0:r.name)]},onClick:e.closePopup,analyticsData:D,analyticsOptions:{entity:l.py.Interactive,actionType:l.Vw.Click,location:l.LZ.PreviewInteractiveQuestions,descriptor:l._S.Button}},{label:N("printAsWorksheet"),className:"btn btn-outline-dark ".concat(b.printBtn),svgName:f.vn.Print,button:!0,onClick:function(){var e;I(!0),(0,h.X)(x.data,null===(e=A.data._isClickViewCurated)||void 0===e?void 0:e.value,(function(){return I(!1)}))},showSpinner:T,analyticsData:D,analyticsOptions:{entity:l.py.Interactive,actionType:l.Vw.Print,location:l.LZ.PreviewInteractiveQuestions,workflowPhase:l.eu.Start,eventVersion:l.eq.V2}}];return a.createElement(u.G,{title:N("mainTitle"),closePopup:e.closePopup,showLoadingSpinner:!x.data,size:"lg"},x.data?a.createElement(a.Fragment,null,a.createElement(m.Z,{interactive:x.data,maxHeight:p.x,experimentalInteractiveQuestions:S,goToTimepoint:function(t,n,a){var r;i.Q.C$.trigger({application:y.O.INTERACTIVES,action:E.e.Interactives.VIEW_INTERACTIVE,args:[e.id,c.m.slugify(null===(r=x.data)||void 0===r?void 0:r.name)],params:a?{t:Math.floor(a/1e3)}:null}),e.closePopup()}}),a.createElement(d.u,null,a.createElement(s.e,{actions:F}))):a.createElement(a.Fragment,null))}}}]);
2
+ //# sourceMappingURL=4690-1f554d0be9-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/4690-1f554d0be9-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/shared/src/components/interactive-questions/interactive-questions.scss","file:///app/packages/libs/shared/src/components/interactive-questions/InteractiveQuestions.tsx","file:///app/packages/libs/shared/src/constants/MinimumGlanceHeight.ts","file:///app/packages/libs/shared/src/enums/InteractionCorrectness.ts","file:///app/packages/projects/lite/src/apps/interactives/components/printable-interactive-worksheet/printable-interactive-worksheet.scss","file:///app/packages/projects/lite/src/apps/interactives/components/printable-interactive-worksheet/PrintableInteractionContent.tsx","file:///app/packages/projects/lite/src/apps/interactives/components/printable-interactive-worksheet/PrintableInteractiveWorksheet.tsx","file:///app/packages/projects/lite/src/apps/interactives/utils/PrintInteractive.tsx","file:///app/packages/projects/lite/src/apps/interactives/views/preview-questions/preview-questions.scss","file:///app/packages/projects/lite/src/apps/interactives/views/preview-questions/PreviewQuestionsView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n customSize?: boolean;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n svgSize={props.dropdownToggleSvgSize}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n customSize={props.customSize}\n ariaLabel={a.tooltip}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={'More actions dropdown'}\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <ul className='dropdown-menu dropdown-menu-end dropdown-menu-right font-size-normal' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </li>\n );\n }\n \n return (\n <li key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </li>\n );\n })\n }\n </ul>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"timeTag\":\"ShZvf\",\"hide\":\"FHzDr\",\"time\":\"JDp5N\",\"type\":\"AzIWg\",\"question\":\"UhEYq\",\"deleteContainer\":\"wBqoo\",\"delete\":\"OAQQu\",\"correctness\":\"W5sR9\",\"selected\":\"tfrDf\",\"row\":\"sGk59\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { ExperimentalInteractionTypes, Interaction, Interactive, Timepoint } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { InteractionLabel } from './InteractionLabel';\n\nimport styles from './interactive-questions.scss';\n\nconst namespace = 'shared.interactiveQuestions';\n\ninterface CorrectnessProps {\n interaction: Interaction;\n getCorrectness?: (interaction: Interaction) => InteractionCorrectness;\n}\n\nfunction Correctness(props: CorrectnessProps): React.ReactElement {\n const { interaction, getCorrectness } = props;\n\n const correctness = getCorrectness(interaction);\n\n switch (correctness) {\n case InteractionCorrectness.Correct:\n return <span className='text-success'><SvgContainer size={SvgContainerSize.Medium} svgName={cvSvgLibrary.Check} /></span>;\n case InteractionCorrectness.Incorrect:\n return <span className='text-danger'><SvgContainer size={SvgContainerSize.Medium} svgName={cvSvgLibrary.Close} /></span>;\n case InteractionCorrectness.AwaitingMarking:\n return <span className='text-secondary italic'><i><Text namespace={namespace} phrase='pending' /></i></span>;\n case InteractionCorrectness.UnAnswered:\n return <button className='btn btn-outline-dark'><Text namespace={namespace} phrase='answer' /></button>;\n case InteractionCorrectness.Answered:\n return <span className='text-secondary italic'><i><Text namespace={namespace} phrase='answered' /></i></span>;\n case InteractionCorrectness.NotApplicable:\n return <></>;\n }\n}\n\ninterface InteractionComponentProps {\n interaction: Interaction;\n visibleAt: number;\n hasPlayPageV2?: boolean;\n goToTimepoint: (interactionId: string) => void;\n onClickDelete?: (interactionId: string) => void;\n scrollTo: (offset: number, height: number) => void;\n selectedInteractionId: string;\n isFirstInteraction: boolean;\n getCorrectness?: (interaction: Interaction) => InteractionCorrectness;\n}\n\nfunction InteractionComponent(props: InteractionComponentProps): React.ReactElement {\n const {\n interaction,\n visibleAt,\n selectedInteractionId,\n goToTimepoint,\n scrollTo,\n isFirstInteraction,\n hasPlayPageV2\n } = props;\n\n const selected = interaction.id.toString() === selectedInteractionId?.toString();\n\n const ref = React.useRef<HTMLDivElement>();\n\n React.useEffect(() => {\n if (!selected)\n return;\n\n if (!ref.current)\n return;\n\n const el = ref.current;\n const rect = el.getBoundingClientRect();\n const offset = rect.top - el.offsetParent.getBoundingClientRect().top;\n\n scrollTo(offset, rect.height);\n }, [selected]);\n\n function onClick(): void {\n goToTimepoint && goToTimepoint(interaction.id);\n }\n\n function onClickDelete(event: React.MouseEvent): void {\n event.stopPropagation();\n\n props.onClickDelete(interaction.id);\n }\n\n /**\n * Don't have a cursor if there is no callback function.\n * i.e. when rendered in a popup\n */\n const cursor = goToTimepoint ? 'cursor-pointer' : 'cursor-default';\n\n return (\n <div ref={ref}>\n <DivButton className={`py-2 ${cursor} ${styles.row} ${selected ? styles.selected : ''}`} onClick={selected ? () => {} : onClick}>\n {hasPlayPageV2 ? (\n <div className={`me-3 d-inline-flex rounded-pill justify-content-center align-items-center text-info fw-semibold bg-light-blue ${styles.timeTag} ${isFirstInteraction ? '' : styles.hide}`}>\n {isFirstInteraction ? DurationHelper.ToDisplayDuration(visibleAt) : ''}\n </div>\n ) : (\n <span className={`${styles.time} me-2 ${selected ? 'fw-bold' : ''}`}>{isFirstInteraction ? DurationHelper.ToDisplayDuration(visibleAt) : ''}</span>\n )}\n\n <InteractionLabel\n interaction={interaction}\n showTypeName\n typeNameClassName={styles.type}\n questionClassName={styles.question}\n />\n {props.onClickDelete && (\n <DivButton onClick={onClickDelete} className={`${styles.deleteContainer}`}>\n <span className={`text-end ${styles.delete}`}>\n <SvgContainer\n size={SvgContainerSize.Medium}\n svgName={cvSvgLibrary.Delete}\n />\n </span>\n </DivButton>\n )}\n {props.getCorrectness && (\n <span className={`text-end ${styles.correctness}`}>\n <Correctness interaction={interaction} getCorrectness={props.getCorrectness} />\n </span>\n )}\n </DivButton>\n </div>\n );\n}\n\ninterface TimepointComponentProps {\n timepoint: Timepoint;\n hasPlayPageV2?: boolean;\n goToTimepoint?: (timepointId: string, interactionId: string, visibleAt: number) => void;\n selectedInteractionId?: string;\n scrollTo?: (offset: number, height: number) => void;\n onClickDelete?: (interactionId: string) => void;\n getCorrectness?: (interaction: Interaction) => InteractionCorrectness;\n experimentalInteractiveQuestions?: boolean;\n}\n\nexport function TimepointComponent(props: TimepointComponentProps): React.ReactElement {\n const {\n timepoint,\n scrollTo,\n onClickDelete,\n selectedInteractionId,\n getCorrectness,\n hasPlayPageV2\n } = props;\n\n function goToTimepoint(interactionId: string): void {\n props.goToTimepoint(timepoint.id, interactionId, timepoint.visibleAt);\n }\n\n if (!timepoint.interactions)\n return <></>;\n\n return (\n <>\n {timepoint.interactions.map((interaction, i) => {\n if (!props.experimentalInteractiveQuestions && ExperimentalInteractionTypes[interaction.typeId])\n return <React.Fragment key={i} />;\n\n return (\n <InteractionComponent\n interaction={interaction}\n visibleAt={timepoint.visibleAt}\n goToTimepoint={props.goToTimepoint && goToTimepoint}\n onClickDelete={onClickDelete}\n scrollTo={scrollTo}\n selectedInteractionId={selectedInteractionId}\n isFirstInteraction={i === 0}\n getCorrectness={getCorrectness}\n key={i}\n hasPlayPageV2={hasPlayPageV2}\n />\n );\n })\n }\n </>\n );\n}\n\nexport interface InteractiveQuestionProps {\n interactive: Interactive;\n goToTimepoint?: (timepointId: string, interactionId: string, visibleAt: number) => void;\n selectedInteractionId?: string;\n maxHeight: number;\n hasPlayPageV2?: boolean;\n onClickDelete?: (interactionId: string) => void;\n getCorrectness?: (interaction: Interaction) => InteractionCorrectness;\n experimentalInteractiveQuestions?: boolean;\n}\n\nexport function InteractiveQuestions(props: InteractiveQuestionProps): React.ReactElement {\n const {\n interactive,\n goToTimepoint,\n selectedInteractionId,\n maxHeight,\n onClickDelete,\n getCorrectness,\n hasPlayPageV2\n } = props;\n\n const ref = React.useRef<Scrollbars>();\n\n function scrollTo(offset: number, elHeight: number): void {\n if (!ref.current)\n return;\n\n const height = ref.current.getClientHeight();\n const scroll = ref.current.getScrollTop();\n const elementFromTop = offset + scroll;\n\n /**\n * Element is above scroll window if it's distance from the top\n * is less than the scroll\n */\n const isAboveScrollWindow = elementFromTop < scroll;\n\n /**\n * Element is beneath scroll window if it's distance from the top\n * plus it's height is greater than the scroll plus the window height\n */\n const isBelowScrollWindow = (elementFromTop + elHeight) > (scroll + height);\n\n /**\n * So we don't scroll if our element is visible\n */\n if (!isAboveScrollWindow && !isBelowScrollWindow)\n return;\n\n /**\n * If our element isn't visible, we want to try scroll so the element is\n * centered in our viewport\n */\n ref.current.scrollTop(elementFromTop - (height / 2) + (elHeight / 2));\n }\n\n const borderClass = goToTimepoint ? 'border rounded' : '';\n\n return (\n <Scrollbars\n autoHeight\n autoHeightMax={maxHeight}\n className={borderClass}\n hideTracksWhenNotNeeded={true}\n ref={ref}\n >\n <div className='px-3 py-1'>\n {interactive.timepoints.map((t, i) => (\n <TimepointComponent\n key={i}\n timepoint={t}\n goToTimepoint={goToTimepoint}\n selectedInteractionId={selectedInteractionId}\n scrollTo={scrollTo}\n onClickDelete={onClickDelete}\n getCorrectness={getCorrectness}\n hasPlayPageV2={hasPlayPageV2}\n experimentalInteractiveQuestions={props.experimentalInteractiveQuestions}\n />\n ))\n }\n </div>\n </Scrollbars>\n );\n}\n","// 368 is the min height of Video at a glance which is defined as $glanceHeight in synopsis.scss\nexport const MINIMUM_GLANCE_HEIGHT = 368; // px","export enum InteractionCorrectness {\n Correct,\n Incorrect,\n AwaitingMarking,\n \n Answered,\n UnAnswered,\n NotApplicable\n}","// extracted by mini-css-extract-plugin\nexport default {\"worksheet\":\"Bv47P\",\"interaction\":\"efkgi\",\"timepointCell\":\"ffoDR\",\"interactionCell\":\"rKBEu\",\"checkbox\":\"ilhe4\",\"multipleChoiceAnswer\":\"TqhFx\",\"shortAnswerTextArea\":\"voJCM\",\"image\":\"go2dV\",\"cvLogo\":\"Z4GOw\",\"copyright\":\"petLf\",\"illustrationDrawingArea\":\"iA_Dl\"};","import React from 'react';\n\nimport { Interaction, InteractionTypeId } from 'libs/shared/interfaces';\n\nimport styles from './printable-interactive-worksheet.scss';\n\nconst MISSING_WORD_REGEX = /{([^{}]*)}/g;\n\ninterface PrintableInteractionContentProps {\n interaction: Interaction;\n}\n\nfunction InteractionName(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <div className='mb-2'>{props.interaction.name}</div>\n );\n}\n\nfunction AnnotationInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <div dangerouslySetInnerHTML={{ __html: props.interaction.data.annotation }}></div>\n );\n}\n\nfunction ImageInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <img className={styles.image} src={props.interaction.data.url} />\n </>\n );\n}\n\nfunction MissingWordInteraction(props: PrintableInteractionContentProps): JSX.Element {\n function replaceMissingWord(match: string, val: string): string {\n const actionableItem = props.interaction.actionableItems.find(a => a.order.toString() === val);\n const width = 2 * actionableItem.name.length;\n return Array(width + 1).join('_');\n }\n\n const sentence = typeof props.interaction.data === 'string'\n ? JSON.parse(props.interaction.data).sentence\n : props.interaction.data.sentence;\n\n const formatted = sentence.replace(MISSING_WORD_REGEX, replaceMissingWord);\n\n return (\n <div>{formatted}</div>\n );\n}\n\nfunction MultipleChoiceInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <table>\n <tbody>\n {props.interaction.actionableItems.map(a => (\n <tr key={a.id}>\n <td>\n <div className={`border ${styles.checkbox}`} />\n </td>\n <td className='break-word align-top'>\n <div className={styles.multipleChoiceAnswer}>\n {a.name}\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </>\n );\n}\n\nfunction ShortAnswerInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <div className={`border w-100 ${styles.shortAnswerTextArea}`} />\n </>\n );\n}\n\nfunction IllustrationInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <div className={`w-100 border ${styles.illustrationDrawingArea}`} />\n </>\n );\n}\n\nexport const PrintableInteractionComponentLookup: {\n [typeId: number]: (props: PrintableInteractionContentProps) => JSX.Element\n} = {\n [InteractionTypeId.Annotation]: AnnotationInteraction,\n [InteractionTypeId.Image]: ImageInteraction,\n [InteractionTypeId.MissingWord]: MissingWordInteraction,\n [InteractionTypeId.MultipleChoice]: MultipleChoiceInteraction,\n [InteractionTypeId.TrueOrFalse]: MultipleChoiceInteraction,\n [InteractionTypeId.ShortAnswer]: ShortAnswerInteraction,\n [InteractionTypeId.Illustration]: IllustrationInteraction\n};\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Interaction, Interactive } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nimport { PrintableInteractionComponentLookup } from './PrintableInteractionContent';\n\nimport styles from './printable-interactive-worksheet.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('interactives.printableInteractiveWorksheet');\n\ninterface PrintableInteractionProps {\n interaction: Interaction;\n visibleAt: number;\n}\n\nfunction PrintableInteraction(props: PrintableInteractionProps): JSX.Element {\n const InteractionComponent = PrintableInteractionComponentLookup[props.interaction.typeId];\n\n if (!InteractionComponent)\n return <></>;\n\n return (\n <tr className={styles.interaction}>\n <td className={`align-top ${styles.timepointCell}`}>\n {DurationHelper.ToDisplayDuration(props.visibleAt)}\n </td>\n <td className={`break-word ${styles.interactionCell}`}>\n <InteractionComponent interaction={props.interaction} />\n </td>\n </tr>\n );\n}\n\ninterface PrintableInteractiveQuestionsProps {\n interactive: Interactive;\n}\n\nfunction PrintableInteractiveQuestions(props: PrintableInteractiveQuestionsProps): JSX.Element {\n return (\n <>\n {props.interactive.timepoints.map((timepoint, i) => (\n timepoint.interactions.map((interaction, j) => (\n <PrintableInteraction key={`${i}:${j}`} interaction={interaction} visibleAt={timepoint.visibleAt} />\n ))\n ))}\n </>\n );\n}\n\ninterface PrintableInteractiveWorksheetProps {\n worksheetElementId: string;\n interactive: Interactive;\n isClickViewContent: boolean;\n}\n\nexport function PrintableInteractiveWorksheet(props: PrintableInteractiveWorksheetProps): JSX.Element {\n const year = (new Date()).getFullYear();\n\n return (\n <div id={props.worksheetElementId} className={styles.worksheet}>\n <div className='row pb-2'>\n <div className='col-6'>{getPhrase('name')} ______________________________</div>\n <div className='col-6'>{getPhrase('date')} ______________________________</div>\n </div>\n <h1>\n <strong>{getPhrase('questionSheet')}:</strong> {props.interactive.name}\n </h1>\n <table>\n <tbody>\n <PrintableInteractiveQuestions interactive={props.interactive} />\n </tbody>\n </table>\n <div className={styles.cvLogo}>\n <ClickViewLogo />\n </div>\n {props.isClickViewContent &&\n <span className={styles.copyright}>{getPhrase('copyright', { year })}</span>\n }\n </div>\n );\n}\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport printJS from 'print-js';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { Interactive } from 'libs/shared/interfaces';\n\nimport { PrintableInteractiveWorksheet } from 'apps/interactives/components/printable-interactive-worksheet/PrintableInteractiveWorksheet';\n\nconst getPhrase = LanguageService.encloseNamespace('interactives.utils');\n\nexport function printInteractive(interactive: Interactive, isCVContent: boolean, onDone?: () => void): void {\n const printRegion = document.getElementById('print-region');\n\n if (!printRegion)\n Core.ErrorHelper.throw(new DevError('Could not find print region in layout'));\n\n if (!interactive)\n return;\n\n const worksheetElementId = `printable-interactive-${interactive.id}`;\n\n const root = createRoot(printRegion);\n\n function print(): void {\n printJS({\n printable: worksheetElementId,\n type: 'html',\n documentTitle: getPhrase('worksheetTitle', { interactiveName: interactive.name }),\n targetStyles: ['*'],\n style: '@page { size: A4; margin: 1.5cm 0; }',\n onLoadingEnd: () => {\n onDone && onDone();\n root.unmount();\n },\n /**\n * font_size is deprecated but a bug in print.js still applies the default (12pt) if it\n * is omitted, overriding any custom/inline styles. \n * This value is the same as the one found in in .worksheet in printable-interactive-worksheet.scss\n */\n font_size: '14px'\n });\n }\n\n root.render(\n <div className='d-none'>\n <PrintableInteractiveWorksheet\n worksheetElementId={worksheetElementId}\n interactive={interactive}\n isClickViewContent={isCVContent}\n />\n </div>\n );\n\n window.setTimeout(() => {\n print();\n }, 200);\n}","// extracted by mini-css-extract-plugin\nexport default {\"printBtn\":\"VWlur\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ClickDescriptor, EntityType, EventVersion, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions as ActionButtons } from 'libs/shared/components/actions/Actions';\nimport { InteractiveQuestions } from 'libs/shared/components/interactive-questions/InteractiveQuestions';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Interactive, InteractiveMetadata, PopupViewProps } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { printInteractive } from 'apps/interactives/utils/PrintInteractive';\n\nimport styles from './preview-questions.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('interactives.previewQuestions');\n\ninterface PreviewQuestionsViewProps extends PopupViewProps {\n id: string;\n}\n\nexport function PreviewQuestionsView(props: PreviewQuestionsViewProps): React.ReactElement {\n const [ showPrintButtonSpinner, setShowPrintButtonSpinner ] = React.useState(false);\n\n const { experimentalInteractiveQuestions } = useSettings(null);\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.id)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n\n let analyticsData: HashObject = null;\n\n if (interactiveMetadata.data) {\n analyticsData = {\n id: interactiveMetadata.data.id,\n interactiveId: interactiveMetadata.data.interactiveId,\n name: interactiveMetadata.data.name\n };\n\n if (interactiveMetadata.data._parentVideo?.id)\n analyticsData.video = { id: interactiveMetadata.data._parentVideo.id };\n\n if (interactiveMetadata.data._parentClip?.id)\n analyticsData.clip = { id: interactiveMetadata.data._parentClip.id };\n }\n\n const actions: ActionOptions[] = [\n {\n label: getPhrase('watchInteractive'),\n className: 'btn btn-outline-dark me-2',\n svgName: cvSvgLibrary.Play,\n button: true,\n appLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ props.id, TextHelper.slugify(interactive.data?.name) ]\n },\n onClick: props.closePopup,\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Interactive,\n actionType: UserAction.Click,\n location: LocationContext.PreviewInteractiveQuestions,\n descriptor: ClickDescriptor.Button\n }\n },\n {\n label: getPhrase('printAsWorksheet'),\n className: `btn btn-outline-dark ${styles.printBtn}`,\n svgName: cvSvgLibrary.Print,\n button: true,\n onClick: () => {\n setShowPrintButtonSpinner(true);\n printInteractive(\n interactive.data,\n interactiveMetadata.data._isClickViewCurated?.value,\n () => setShowPrintButtonSpinner(false)\n );\n },\n showSpinner: showPrintButtonSpinner,\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Interactive,\n actionType: UserAction.Print,\n location: LocationContext.PreviewInteractiveQuestions,\n workflowPhase: WorkflowPhase.Start,\n eventVersion: EventVersion.V2\n }\n }\n ];\n\n function goToTimepoint(_: string, __: string, visibleAt: number): void {\n Core.AppLinkHelper.trigger({\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ props.id, TextHelper.slugify(interactive.data?.name) ],\n params: visibleAt ? { t: Math.floor(visibleAt / 1000) } : null\n });\n props.closePopup();\n }\n\n return (\n <Popup\n title={getPhrase('mainTitle')}\n closePopup={props.closePopup}\n showLoadingSpinner={!interactive.data}\n size='lg'\n >\n {(() => {\n if (!interactive.data)\n return <></>;\n\n return (\n <>\n <InteractiveQuestions\n interactive={interactive.data}\n maxHeight={MINIMUM_GLANCE_HEIGHT}\n experimentalInteractiveQuestions={experimentalInteractiveQuestions}\n goToTimepoint={goToTimepoint}\n />\n <PopupButtons>\n <ActionButtons actions={actions} />\n </PopupButtons>\n </>\n );\n })()}\n </Popup>\n );\n}\n"],"names":["Actions","props","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","map","idx","key","label","appLink","href","onClick","svgName","svgSize","dropdownToggleSvgSize","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","showBorder","customSize","ariaLabel","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","type","id","size","showDivider","undefined","group","Tooltip","defaultProps","S","namespace","Correctness","interaction","getCorrectness","InteractionCorrectness","Text","phrase","InteractionComponent","visibleAt","selectedInteractionId","goToTimepoint","scrollTo","isFirstInteraction","hasPlayPageV2","selected","toString","ref","current","el","rect","getBoundingClientRect","offset","top","offsetParent","cursor","DivButton","DurationHelper","InteractionLabel","showTypeName","typeNameClassName","questionClassName","onClickDelete","event","stopPropagation","TimepointComponent","timepoint","interactionId","interactions","i","experimentalInteractiveQuestions","typeId","InteractiveQuestions","interactive","maxHeight","elHeight","getClientHeight","scroll","getScrollTop","elementFromTop","scrollTop","borderClass","autoHeight","autoHeightMax","hideTracksWhenNotNeeded","timepoints","t","MINIMUM_GLANCE_HEIGHT","MISSING_WORD_REGEX","InteractionName","name","MultipleChoiceInteraction","actionableItems","PrintableInteractionComponentLookup","dangerouslySetInnerHTML","__html","data","annotation","src","url","formatted","JSON","parse","sentence","replace","match","val","find","Array","join","getPhrase","LanguageService","PrintableInteraction","PrintableInteractiveQuestions","j","PrintableInteractiveWorksheet","year","Date","getFullYear","worksheetElementId","ClickViewLogo","isClickViewContent","printInteractive","isCVContent","onDone","printRegion","document","getElementById","DevError","root","render","window","setTimeout","printable","documentTitle","interactiveName","targetStyles","onLoadingEnd","unmount","font_size","PreviewQuestionsView","showPrintButtonSpinner","setShowPrintButtonSpinner","useSettings","interactiveMetadata","InteractiveRequests","interactiveId","_parentVideo","video","_parentClip","clip","application","args","TextHelper","closePopup","entity","actionType","location","descriptor","_isClickViewCurated","value","workflowPhase","eventVersion","Popup","showLoadingSpinner","_","__","params","Math","floor","PopupButtons"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8046],{41630:(e,t,n)=>{n.d(t,{X:()=>C});var a=n(32735),r=n(44645),i=n(17327),c=n.n(i),l=n(56050),o=n(23481),m=n(81886),s=n(2786),u=n(93264),_=n(40424);const d={worksheet:"Bv47P",interaction:"efkgi",timepointCell:"ffoDR",interactionCell:"rKBEu",checkbox:"ilhe4",multipleChoiceAnswer:"TqhFx",shortAnswerTextArea:"voJCM",image:"go2dV",cvLogo:"Z4GOw",copyright:"petLf",illustrationDrawingArea:"iA_Dl"};function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function p(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=v(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=v(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==v(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var E=/{([^{}]*)}/g;function f(e){return a.createElement("div",{className:"mb-2"},e.interaction.name)}function g(e){return a.createElement(a.Fragment,null,a.createElement(f,{interaction:e.interaction}),a.createElement("table",null,a.createElement("tbody",null,e.interaction.actionableItems.map((function(e){return a.createElement("tr",{key:e.id},a.createElement("td",null,a.createElement("div",{className:"border ".concat(d.checkbox)})),a.createElement("td",{className:"break-word align-top"},a.createElement("div",{className:d.multipleChoiceAnswer},e.name)))})))))}var b=p(p(p(p(p(p(p({},_.Z9.Annotation,(function(e){return a.createElement("div",{dangerouslySetInnerHTML:{__html:e.interaction.data.annotation}})})),_.Z9.Image,(function(e){return a.createElement(a.Fragment,null,a.createElement(f,{interaction:e.interaction}),a.createElement("img",{className:d.image,src:e.interaction.data.url}))})),_.Z9.MissingWord,(function(e){var t=("string"==typeof e.interaction.data?JSON.parse(e.interaction.data).sentence:e.interaction.data.sentence).replace(E,(function(t,n){var a=2*e.interaction.actionableItems.find((function(e){return e.order.toString()===n})).name.length;return Array(a+1).join("_")}));return a.createElement("div",null,t)})),_.Z9.MultipleChoice,g),_.Z9.TrueOrFalse,g),_.Z9.ShortAnswer,(function(e){return a.createElement(a.Fragment,null,a.createElement(f,{interaction:e.interaction}),a.createElement("div",{className:"border w-100 ".concat(d.shortAnswerTextArea)}))})),_.Z9.Illustration,(function(e){return a.createElement(a.Fragment,null,a.createElement(f,{interaction:e.interaction}),a.createElement("div",{className:"w-100 border ".concat(d.illustrationDrawingArea)}))})),y=o.T.encloseNamespace("interactives.printableInteractiveWorksheet");function w(e){var t=b[e.interaction.typeId];return t?a.createElement("tr",{className:d.interaction},a.createElement("td",{className:"align-top ".concat(d.timepointCell)},u.T.ToDisplayDuration(e.visibleAt)),a.createElement("td",{className:"break-word ".concat(d.interactionCell)},a.createElement(t,{interaction:e.interaction}))):a.createElement(a.Fragment,null)}function h(e){return a.createElement(a.Fragment,null,e.interactive.timepoints.map((function(e,t){return e.interactions.map((function(n,r){return a.createElement(w,{key:"".concat(t,":").concat(r),interaction:n,visibleAt:e.visibleAt})}))})))}function k(e){var t=(new Date).getFullYear();return a.createElement("div",{id:e.worksheetElementId,className:d.worksheet},a.createElement("div",{className:"row pb-2"},a.createElement("div",{className:"col-6"},y("name")," ______________________________"),a.createElement("div",{className:"col-6"},y("date")," ______________________________")),a.createElement("h1",null,a.createElement("strong",null,y("questionSheet"),":")," ",e.interactive.name),a.createElement("table",null,a.createElement("tbody",null,a.createElement(h,{interactive:e.interactive}))),a.createElement("div",{className:d.cvLogo},a.createElement(s.$S,null)),e.isClickViewContent&&a.createElement("span",{className:d.copyright},y("copyright",{year:t})))}var N=o.T.encloseNamespace("interactives.utils");function C(e,t,n){var i=document.getElementById("print-region");if(i||m.Q.Ry.throw(new l.H("Could not find print region in layout")),e){var o="printable-interactive-".concat(e.id),s=(0,r.s)(i);s.render(a.createElement("div",{className:"d-none"},a.createElement(k,{worksheetElementId:o,interactive:e,isClickViewContent:t}))),window.setTimeout((function(){c()({printable:o,type:"html",documentTitle:N("worksheetTitle",{interactiveName:e.name}),targetStyles:["*"],style:"@page { size: A4; margin: 1.5cm 0; }",onLoadingEnd:function(){n&&n(),s.unmount()},font_size:"14px"})}),200)}}},59678:(e,t,n)=>{n.r(t),n.d(t,{PrintInteractiveView:()=>u});var a=n(32735),r=n(23481),i=n(20354),c=n(9111),l=n(50023),o=n(20768),m=n(41630),s=r.T.encloseNamespace("interactives.printInteractive");function u(e){var t=i.a.useBasicFetch(o.b.interactiveMetadata(e.id)),n=i.a.useBasicFetch(t.data?o.b.interactive(t.data.interactiveId):null);return a.useEffect((function(){var a;n.data&&(0,m.X)(n.data,null===(a=t.data._isClickViewCurated)||void 0===a?void 0:a.value,e.closePopup)}),[!!n.data]),a.createElement(c.G,{title:s("popupTitle"),closePopup:e.closePopup,showLoadingSpinner:!n.data,size:"lg"},a.createElement(l.E,null))}}}]);
2
+ //# sourceMappingURL=8046-bca92239ef-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8046-bca92239ef-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/interactives/components/printable-interactive-worksheet/printable-interactive-worksheet.scss","file:///app/packages/projects/lite/src/apps/interactives/components/printable-interactive-worksheet/PrintableInteractionContent.tsx","file:///app/packages/projects/lite/src/apps/interactives/components/printable-interactive-worksheet/PrintableInteractiveWorksheet.tsx","file:///app/packages/projects/lite/src/apps/interactives/utils/PrintInteractive.tsx","file:///app/packages/projects/lite/src/apps/interactives/views/print-interactive/PrintInteractiveView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"worksheet\":\"Bv47P\",\"interaction\":\"efkgi\",\"timepointCell\":\"ffoDR\",\"interactionCell\":\"rKBEu\",\"checkbox\":\"ilhe4\",\"multipleChoiceAnswer\":\"TqhFx\",\"shortAnswerTextArea\":\"voJCM\",\"image\":\"go2dV\",\"cvLogo\":\"Z4GOw\",\"copyright\":\"petLf\",\"illustrationDrawingArea\":\"iA_Dl\"};","import React from 'react';\n\nimport { Interaction, InteractionTypeId } from 'libs/shared/interfaces';\n\nimport styles from './printable-interactive-worksheet.scss';\n\nconst MISSING_WORD_REGEX = /{([^{}]*)}/g;\n\ninterface PrintableInteractionContentProps {\n interaction: Interaction;\n}\n\nfunction InteractionName(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <div className='mb-2'>{props.interaction.name}</div>\n );\n}\n\nfunction AnnotationInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <div dangerouslySetInnerHTML={{ __html: props.interaction.data.annotation }}></div>\n );\n}\n\nfunction ImageInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <img className={styles.image} src={props.interaction.data.url} />\n </>\n );\n}\n\nfunction MissingWordInteraction(props: PrintableInteractionContentProps): JSX.Element {\n function replaceMissingWord(match: string, val: string): string {\n const actionableItem = props.interaction.actionableItems.find(a => a.order.toString() === val);\n const width = 2 * actionableItem.name.length;\n return Array(width + 1).join('_');\n }\n\n const sentence = typeof props.interaction.data === 'string'\n ? JSON.parse(props.interaction.data).sentence\n : props.interaction.data.sentence;\n\n const formatted = sentence.replace(MISSING_WORD_REGEX, replaceMissingWord);\n\n return (\n <div>{formatted}</div>\n );\n}\n\nfunction MultipleChoiceInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <table>\n <tbody>\n {props.interaction.actionableItems.map(a => (\n <tr key={a.id}>\n <td>\n <div className={`border ${styles.checkbox}`} />\n </td>\n <td className='break-word align-top'>\n <div className={styles.multipleChoiceAnswer}>\n {a.name}\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </>\n );\n}\n\nfunction ShortAnswerInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <div className={`border w-100 ${styles.shortAnswerTextArea}`} />\n </>\n );\n}\n\nfunction IllustrationInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <div className={`w-100 border ${styles.illustrationDrawingArea}`} />\n </>\n );\n}\n\nexport const PrintableInteractionComponentLookup: {\n [typeId: number]: (props: PrintableInteractionContentProps) => JSX.Element\n} = {\n [InteractionTypeId.Annotation]: AnnotationInteraction,\n [InteractionTypeId.Image]: ImageInteraction,\n [InteractionTypeId.MissingWord]: MissingWordInteraction,\n [InteractionTypeId.MultipleChoice]: MultipleChoiceInteraction,\n [InteractionTypeId.TrueOrFalse]: MultipleChoiceInteraction,\n [InteractionTypeId.ShortAnswer]: ShortAnswerInteraction,\n [InteractionTypeId.Illustration]: IllustrationInteraction\n};\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Interaction, Interactive } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nimport { PrintableInteractionComponentLookup } from './PrintableInteractionContent';\n\nimport styles from './printable-interactive-worksheet.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('interactives.printableInteractiveWorksheet');\n\ninterface PrintableInteractionProps {\n interaction: Interaction;\n visibleAt: number;\n}\n\nfunction PrintableInteraction(props: PrintableInteractionProps): JSX.Element {\n const InteractionComponent = PrintableInteractionComponentLookup[props.interaction.typeId];\n\n if (!InteractionComponent)\n return <></>;\n\n return (\n <tr className={styles.interaction}>\n <td className={`align-top ${styles.timepointCell}`}>\n {DurationHelper.ToDisplayDuration(props.visibleAt)}\n </td>\n <td className={`break-word ${styles.interactionCell}`}>\n <InteractionComponent interaction={props.interaction} />\n </td>\n </tr>\n );\n}\n\ninterface PrintableInteractiveQuestionsProps {\n interactive: Interactive;\n}\n\nfunction PrintableInteractiveQuestions(props: PrintableInteractiveQuestionsProps): JSX.Element {\n return (\n <>\n {props.interactive.timepoints.map((timepoint, i) => (\n timepoint.interactions.map((interaction, j) => (\n <PrintableInteraction key={`${i}:${j}`} interaction={interaction} visibleAt={timepoint.visibleAt} />\n ))\n ))}\n </>\n );\n}\n\ninterface PrintableInteractiveWorksheetProps {\n worksheetElementId: string;\n interactive: Interactive;\n isClickViewContent: boolean;\n}\n\nexport function PrintableInteractiveWorksheet(props: PrintableInteractiveWorksheetProps): JSX.Element {\n const year = (new Date()).getFullYear();\n\n return (\n <div id={props.worksheetElementId} className={styles.worksheet}>\n <div className='row pb-2'>\n <div className='col-6'>{getPhrase('name')} ______________________________</div>\n <div className='col-6'>{getPhrase('date')} ______________________________</div>\n </div>\n <h1>\n <strong>{getPhrase('questionSheet')}:</strong> {props.interactive.name}\n </h1>\n <table>\n <tbody>\n <PrintableInteractiveQuestions interactive={props.interactive} />\n </tbody>\n </table>\n <div className={styles.cvLogo}>\n <ClickViewLogo />\n </div>\n {props.isClickViewContent &&\n <span className={styles.copyright}>{getPhrase('copyright', { year })}</span>\n }\n </div>\n );\n}\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport printJS from 'print-js';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { Interactive } from 'libs/shared/interfaces';\n\nimport { PrintableInteractiveWorksheet } from 'apps/interactives/components/printable-interactive-worksheet/PrintableInteractiveWorksheet';\n\nconst getPhrase = LanguageService.encloseNamespace('interactives.utils');\n\nexport function printInteractive(interactive: Interactive, isCVContent: boolean, onDone?: () => void): void {\n const printRegion = document.getElementById('print-region');\n\n if (!printRegion)\n Core.ErrorHelper.throw(new DevError('Could not find print region in layout'));\n\n if (!interactive)\n return;\n\n const worksheetElementId = `printable-interactive-${interactive.id}`;\n\n const root = createRoot(printRegion);\n\n function print(): void {\n printJS({\n printable: worksheetElementId,\n type: 'html',\n documentTitle: getPhrase('worksheetTitle', { interactiveName: interactive.name }),\n targetStyles: ['*'],\n style: '@page { size: A4; margin: 1.5cm 0; }',\n onLoadingEnd: () => {\n onDone && onDone();\n root.unmount();\n },\n /**\n * font_size is deprecated but a bug in print.js still applies the default (12pt) if it\n * is omitted, overriding any custom/inline styles. \n * This value is the same as the one found in in .worksheet in printable-interactive-worksheet.scss\n */\n font_size: '14px'\n });\n }\n\n root.render(\n <div className='d-none'>\n <PrintableInteractiveWorksheet\n worksheetElementId={worksheetElementId}\n interactive={interactive}\n isClickViewContent={isCVContent}\n />\n </div>\n );\n\n window.setTimeout(() => {\n print();\n }, 200);\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupLoadingSpinner } from 'libs/shared/components/popup/PopupLoadingSpinner';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { Interactive, InteractiveMetadata, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { printInteractive } from 'apps/interactives/utils/PrintInteractive';\n\nconst getPhrase = LanguageService.encloseNamespace('interactives.printInteractive');\n\ninterface PrintInteractiveViewProps extends PopupViewProps {\n id: string;\n}\n\nexport function PrintInteractiveView(props: PrintInteractiveViewProps): React.ReactElement {\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.id)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n\n React.useEffect(() => {\n if (!interactive.data)\n return;\n\n printInteractive(interactive.data, interactiveMetadata.data._isClickViewCurated?.value, props.closePopup);\n }, [!!interactive.data]);\n\n return (\n <Popup\n title={getPhrase('popupTitle')}\n closePopup={props.closePopup}\n showLoadingSpinner={!interactive.data}\n size='lg'\n >\n <PopupLoadingSpinner />\n </Popup>\n );\n}\n"],"names":["MISSING_WORD_REGEX","InteractionName","props","className","interaction","name","MultipleChoiceInteraction","actionableItems","map","a","key","id","PrintableInteractionComponentLookup","dangerouslySetInnerHTML","__html","data","annotation","src","url","formatted","JSON","parse","sentence","replace","match","val","width","find","order","toString","length","Array","join","getPhrase","LanguageService","PrintableInteraction","InteractionComponent","typeId","DurationHelper","visibleAt","PrintableInteractiveQuestions","interactive","timepoints","timepoint","i","interactions","j","PrintableInteractiveWorksheet","year","Date","getFullYear","worksheetElementId","ClickViewLogo","isClickViewContent","printInteractive","isCVContent","onDone","printRegion","document","getElementById","DevError","root","render","window","setTimeout","printable","type","documentTitle","interactiveName","targetStyles","style","onLoadingEnd","unmount","font_size","PrintInteractiveView","interactiveMetadata","interactiveId","_isClickViewCurated","value","closePopup","title","showLoadingSpinner","size"],"sourceRoot":""}