@clickview/lite 0.71.0-rc.2 → 0.71.0-rc.4
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 +1 -1
- package/dist/css/{7309-lite-7a7d50455e.chunk.css → 7309-lite-b864b38424.chunk.css} +1 -1
- package/dist/css/8046-lite-aee4b235e4.chunk.css +1 -0
- package/dist/scripts/7309-2c6299bbc3-lite.chunk.js +2 -0
- package/dist/scripts/7309-2c6299bbc3-lite.chunk.js.map +1 -0
- package/dist/scripts/8046-590720816e-lite.chunk.js +2 -0
- package/dist/scripts/8046-590720816e-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-59b72c13db.min.js → bundle-5997477f16.min.js} +3 -3
- package/dist/scripts/{bundle-59b72c13db.min.js.map → bundle-5997477f16.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/css/8046-lite-319bb5a9c1.chunk.css +0 -1
- package/dist/scripts/7309-bacbab59b3-lite.chunk.js +0 -2
- package/dist/scripts/7309-bacbab59b3-lite.chunk.js.map +0 -1
- package/dist/scripts/8046-42928149ee-lite.chunk.js +0 -2
- package/dist/scripts/8046-42928149ee-lite.chunk.js.map +0 -1
- /package/dist/scripts/{bundle-59b72c13db.min.js.LICENSE.txt → bundle-5997477f16.min.js.LICENSE.txt} +0 -0
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.Bv47P{width:16cm;margin:0 auto;font-size:14px;line-height:1}.efkgi{break-inside:avoid !important}.efkgi .ffoDR,.efkgi .rKBEu{padding-bottom:28px}.efkgi .ffoDR{width:1.5cm}.efkgi .rKBEu{width:14.5cm}.ilhe4{width:32px;height:32px;margin-right:10px;margin-bottom:10px;border-color:#000 !important}.TqhFx{padding-top:8px}.voJCM{height:120px;border-color:#000 !important}.go2dV{max-height:250px;max-width:100%}.Z4GOw,.petLf{height:23px;position:fixed;bottom:0}.Z4GOw{width:120px;left:2.5cm}.petLf{right:2.5cm}.iA_Dl{height:350px;border-color:#000 !important}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7309],{8484:(e,t,n)=>{n.d(t,{Z:()=>y});var a=n(32735),r=n(42648),i=n(11607),c=n(83914),o=n(83345),l=n(28972),s=n(38129),u=n(93264),m=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 v="shared.interactiveQuestions";function f(e){var t=e.interaction;switch((0,e.getCorrectness)(t)){case l.w.Correct:return a.createElement("span",{className:"text-success"},a.createElement(c.x,{size:c.S.Medium,svgName:m.vn.Check}));case l.w.Incorrect:return a.createElement("span",{className:"text-danger"},a.createElement(c.x,{size:c.S.Medium,svgName:m.vn.Close}));case l.w.AwaitingMarking:return a.createElement("span",{className:"text-secondary italic"},a.createElement("i",null,a.createElement(o.x,{namespace:v,phrase:"pending"})));case l.w.UnAnswered:return a.createElement("button",{className:"btn btn-outline-dark"},a.createElement(o.x,{namespace:v,phrase:"answer"}));case l.w.Answered:return a.createElement("span",{className:"text-secondary italic"},a.createElement("i",null,a.createElement(o.x,{namespace:v,phrase:"answered"})));case l.w.NotApplicable:return a.createElement(a.Fragment,null)}}function g(e){var t=e.interaction,n=e.visibleAt,r=e.selectedInteractionId,o=e.goToTimepoint,l=e.scrollTo,s=e.isFirstInteraction,v=t.id.toString()===(null==r?void 0:r.toString()),g=a.useRef(null);a.useEffect((function(){if(v&&g.current){var e=g.current,t=e.getBoundingClientRect(),n=t.top-e.offsetParent.getBoundingClientRect().top;l(n,t.height)}}),[v]);var E=o?"cursor-pointer":"cursor-default";return a.createElement("div",{ref:g},a.createElement(i.L,{className:"py-2 ".concat(E," ").concat(p.row," ").concat(v?p.selected:""),onClick:v?function(){}:function(){o&&o(t.id)}},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?u.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(c.x,{size:c.S.Medium,svgName:m.vn.Delete}))),e.getCorrectness&&a.createElement("span",{className:"text-end ".concat(p.correctness)},a.createElement(f,{interaction:t,getCorrectness:e.getCorrectness}))))}function E(e){var t=e.timepoint,n=e.scrollTo,r=e.onClickDelete,i=e.selectedInteractionId,c=e.getCorrectness;function o(n){e.goToTimepoint(t.id,n,t.visibleAt)}return t.interactions?a.createElement(a.Fragment,null,t.interactions.map((function(l,u){return!e.experimentalInteractiveQuestions&&s.IL[l.typeId]?a.createElement(a.Fragment,{key:u}):a.createElement(g,{interaction:l,visibleAt:t.visibleAt,goToTimepoint:e.goToTimepoint&&o,onClickDelete:r,scrollTo:n,selectedInteractionId:i,isFirstInteraction:0===u,getCorrectness:c,key:u})}))):a.createElement(a.Fragment,null)}function y(e){var t=e.interactive,n=e.goToTimepoint,i=e.selectedInteractionId,c=e.maxHeight,o=e.onClickDelete,l=e.getCorrectness,s=a.useRef(null);function u(e,t){if(s.current){var n=s.current.getClientHeight(),a=s.current.getScrollTop(),r=e+a;(r<a||r+t>a+n)&&s.current.scrollTop(r-n/2+t/2)}}var m=n?"border rounded":"";return a.createElement(r.$B,{autoHeight:!0,autoHeightMax:c,className:m,hideTracksWhenNotNeeded:!0,ref:s},a.createElement("div",{className:"px-3 py-2"},t.timepoints.map((function(t,r){return a.createElement(E,{key:r,timepoint:t,goToTimepoint:n,selectedInteractionId:i,scrollTo:u,onClickDelete:o,getCorrectness:l,experimentalInteractiveQuestions:e.experimentalInteractiveQuestions})}))))}},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={}))},71241:(e,t,n)=>{n.d(t,{X:()=>k});var a=n(32735),r=n(44645),i=n(17327),c=n.n(i),o=n(56050),l=n(23481),s=n(81886),u=n(2786),m=n(93264),d=n(38129);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 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 f(e,t,n){return(t=function(e){var t=function(e){if("object"!=v(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=v(n))return n;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 g=/{([^{}]*)}/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 _=f(f(f(f(f(f(f({},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(g,(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=_[e.interaction.typeId];return t?a.createElement("tr",{className:p.interaction},a.createElement("td",{className:"align-top ".concat(p.timepointCell)},m.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 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 C(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(h,{interactive:e.interactive}))),a.createElement("div",{className:p.cvLogo},a.createElement(u.$S,null)),e.isClickViewContent&&a.createElement("span",{className:p.copyright},b("copyright",{year:t})))}var I=l.T.encloseNamespace("interactives.utils");function k(e,t,n){var i=document.getElementById("print-region");if(i||s.Q.Ry.throw(new o.H("Could not find print region in layout")),e){var l="printable-interactive-".concat(e.id),u=(0,r.s)(i);u.render(a.createElement("div",{className:"d-none"},a.createElement(C,{worksheetElementId:l,interactive:e,isClickViewContent:t}))),window.setTimeout((function(){c()({printable:l,type:"html",documentTitle:I("worksheetTitle",{interactiveName:e.name}),targetStyles:["*"],style:"@page { size: A4; margin: 1.5cm 0; }",onLoadingEnd:function(){n&&n(),u.unmount()},font_size:"14px"})}),200)}}},47309:(e,t,n)=>{n.r(t),n.d(t,{PreviewQuestionsView:()=>N});var a=n(32735),r=n(23481),i=n(81886),c=n(20354),o=n(28400),l=n(65858),s=n(83657),u=n(8484),m=n(9111),d=n(13876),p=n(40178),v=n(4594),f=n(20768),g=n(37802),E=n(35223),y=n(31908),_=n(14070),b=n(97291),w=n(22490),h=n(71241);const C={printBtn:"VWlur"};function I(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 k=r.T.encloseNamespace("interactives.previewQuestions");function N(e){var t,n,r,N,T,A,S,x=(A=a.useState(!1),S=2,function(e){if(Array.isArray(e))return e}(A)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,c,o=[],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)&&(o.push(a.value),o.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw r}}return o}}(A,S)||function(e,t){if(e){if("string"==typeof e)return I(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)?I(e,t):void 0}}(A,S)||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.")}()),D=x[0],V=x[1],F=(0,g.r)(null).experimentalInteractiveQuestions,P=c.a.useBasicFetch(f.b.interactiveMetadata(e.id)),B=c.a.useBasicFetch(P.data?f.b.interactive(P.data.interactiveId):null),L=null;P.data&&(L={id:P.data.id,interactiveId:P.data.interactiveId,name:P.data.name},(null===(t=P.data._parentVideo)||void 0===t?void 0:t.id)&&(L.video={id:P.data._parentVideo.id}),(null===(n=P.data._parentClip)||void 0===n?void 0:n.id)&&(L.clip={id:P.data._parentClip.id}));var M=[{label:k("watchInteractive"),className:"btn btn-outline-dark me-2",svgName:E.vn.Play,button:!0,appLink:{application:b.O.INTERACTIVES,action:_.e.Interactives.VIEW_INTERACTIVE,args:[e.id,o.m.slugify(null===(r=B.data)||void 0===r?void 0:r.name)]},onClick:e.closePopup,analyticsData:L,analyticsOptions:{entity:l.py.Interactive,actionType:l.Vw.Click,location:l.LZ.PreviewInteractiveQuestions,descriptor:l._S.Button}},{label:k("printAsWorksheet"),className:"btn btn-outline-dark ".concat(C.printBtn),svgName:E.vn.Print,button:!0,onClick:function(){var e;V(!0),(0,h.X)(B.data,null===(e=P.data._isClickViewCurated)||void 0===e?void 0:e.value,(function(){return V(!1)}))},showSpinner:D,analyticsData:L,analyticsOptions:{entity:l.py.Interactive,actionType:l.Vw.Print,location:l.LZ.PreviewInteractiveQuestions,workflowPhase:l.eu.Start,eventVersion:l.eq.V2}}];if(e.showBackButton){var Q=(null===(N=P.data)||void 0===N?void 0:N._parentClip)||(null===(T=P.data)||void 0===T?void 0:T._parentVideo);M.unshift({label:k("back"),appLink:w.W.getInteractiveGuidanceAppLink(null==Q?void 0:Q.id,y.M.isClip(Q)?v.E.Clip:v.E.Video),className:"btn btn-link me-2",button:!0,analyticsData:L,analyticsOptions:{entity:l.py.Interactive,actionType:l.Vw.Click,location:l.LZ.PreviewInteractiveQuestions,workflowPhase:l.eu.Back}})}return a.createElement(m.G,{title:k("mainTitle"),closePopup:e.closePopup,showLoadingSpinner:!B.data,size:"lg"},B.data?a.createElement(a.Fragment,null,a.createElement(u.Z,{interactive:B.data,maxHeight:p.x,experimentalInteractiveQuestions:F,goToTimepoint:function(t,n,a){var r;i.Q.C$.trigger({application:b.O.INTERACTIVES,action:_.e.Interactives.VIEW_INTERACTIVE,args:[e.id,o.m.slugify(null===(r=B.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:M}))):a.createElement(a.Fragment,null))}}}]);
|
|
2
|
-
//# sourceMappingURL=7309-bacbab59b3-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7309-bacbab59b3-lite.chunk.js","mappings":"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","sources":["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/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":["// 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 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 } = props;\n\n const selected = interaction.id.toString() === selectedInteractionId?.toString();\n\n const ref = React.useRef<HTMLDivElement>(null);\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 <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 <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 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 } = 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 />\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 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 } = props;\n\n const ref = React.useRef<Scrollbars>(null);\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-2'>\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 experimentalInteractiveQuestions={props.experimentalInteractiveQuestions}\n />\n ))\n }\n </div>\n </Scrollbars>\n );\n}\n","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 { MasterType } from 'libs/shared/enums/MasterType';\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';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { printInteractive } from 'apps/interactives/utils/PrintInteractive';\n\nimport styles from './preview-questions.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('interactives.previewQuestions');\n\nexport interface PreviewQuestionsQueryParams {\n showBackButton?: boolean;\n}\n\ninterface PreviewQuestionsViewProps extends PopupViewProps {\n id: string;\n showBackButton?: boolean;\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 if (props.showBackButton) {\n const parent = interactiveMetadata.data?._parentClip || interactiveMetadata.data?._parentVideo;\n\n actions.unshift({\n label: getPhrase('back'),\n appLink: VideoAppLinkHelper.getInteractiveGuidanceAppLink(\n parent?.id,\n VideoHelper.isClip(parent) ? MasterType.Clip : MasterType.Video\n ),\n className: 'btn btn-link me-2',\n button: true,\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Interactive,\n actionType: UserAction.Click,\n location: LocationContext.PreviewInteractiveQuestions,\n workflowPhase: WorkflowPhase.Back\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":["namespace","Correctness","props","interaction","getCorrectness","InteractionCorrectness","className","SvgContainer","size","S","svgName","Text","phrase","InteractionComponent","visibleAt","selectedInteractionId","goToTimepoint","scrollTo","isFirstInteraction","selected","id","toString","ref","current","el","rect","getBoundingClientRect","offset","top","offsetParent","height","cursor","DivButton","onClick","DurationHelper","InteractionLabel","showTypeName","typeNameClassName","questionClassName","onClickDelete","event","stopPropagation","TimepointComponent","timepoint","interactionId","interactions","map","i","experimentalInteractiveQuestions","typeId","key","InteractiveQuestions","interactive","maxHeight","elHeight","getClientHeight","scroll","getScrollTop","elementFromTop","scrollTop","borderClass","autoHeight","autoHeightMax","hideTracksWhenNotNeeded","timepoints","t","MISSING_WORD_REGEX","InteractionName","name","MultipleChoiceInteraction","actionableItems","a","PrintableInteractionComponentLookup","dangerouslySetInnerHTML","__html","data","annotation","src","url","formatted","JSON","parse","sentence","replace","match","val","width","find","order","length","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","type","documentTitle","interactiveName","targetStyles","style","onLoadingEnd","unmount","font_size","PreviewQuestionsView","showPrintButtonSpinner","setShowPrintButtonSpinner","useSettings","interactiveMetadata","InteractiveRequests","interactiveId","analyticsData","_parentVideo","video","_parentClip","clip","actions","label","button","appLink","application","action","args","TextHelper","closePopup","analyticsOptions","entity","actionType","location","descriptor","_isClickViewCurated","value","showSpinner","workflowPhase","eventVersion","showBackButton","parent","unshift","VideoAppLinkHelper","VideoHelper","MasterType","Popup","title","showLoadingSpinner","_","__","params","Math","floor","PopupButtons"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8046],{71241:(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(38129);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){if("object"!=v(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=v(n))return n;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(71241),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-42928149ee-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8046-42928149ee-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":""}
|
/package/dist/scripts/{bundle-59b72c13db.min.js.LICENSE.txt → bundle-5997477f16.min.js.LICENSE.txt}
RENAMED
|
File without changes
|