[{"data":1,"prerenderedAt":623},["ShallowReactive",2],{"docs-ca-\u002Fdocs\u002Fsdk\u002Fpackages":3},{"id":4,"title":5,"author":6,"body":7,"date":6,"description":616,"extension":617,"meta":618,"navigation":108,"path":619,"seo":620,"stem":621,"tags":6,"__hash__":622},"content_en\u002Fdocs\u002Fsdk\u002Fpackages.md","Package Reference",null,{"type":8,"value":9,"toc":609},"minimark",[10,14,29,141,146,435,439,444,459,462,468,474,478,483,497,501,506,586,590,605],[11,12,5],"h1",{"id":13},"package-reference",[15,16,17,18,28],"p",{},"All packages are published under the ",[19,20,24],"a",{"href":21,"rel":22},"https:\u002F\u002Fwww.npmjs.com\u002Forg\u002Fxiboplayer",[23],"nofollow",[25,26,27],"code",{},"@xiboplayer"," scope on npm.",[30,31,36],"pre",{"className":32,"code":33,"language":34,"meta":35,"style":35},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","# Install everything\nnpm install @xiboplayer\u002Fcore @xiboplayer\u002Frenderer @xiboplayer\u002Fschedule \\\n  @xiboplayer\u002Fxmds @xiboplayer\u002Fxmr @xiboplayer\u002Fcache @xiboplayer\u002Fstats \\\n  @xiboplayer\u002Fsettings @xiboplayer\u002Futils @xiboplayer\u002Fsync @xiboplayer\u002Fproxy\n\n# Or individual packages\nnpm install @xiboplayer\u002Fxmds    # just the CMS client\nnpm install @xiboplayer\u002Fcache   # just the offline cache\n","bash","",[25,37,38,47,71,88,103,110,116,129],{"__ignoreMap":35},[39,40,43],"span",{"class":41,"line":42},"line",1,[39,44,46],{"class":45},"sutJx","# Install everything\n",[39,48,50,54,58,61,64,67],{"class":41,"line":49},2,[39,51,53],{"class":52},"sbgvK","npm",[39,55,57],{"class":56},"s_sjI"," install",[39,59,60],{"class":56}," @xiboplayer\u002Fcore",[39,62,63],{"class":56}," @xiboplayer\u002Frenderer",[39,65,66],{"class":56}," @xiboplayer\u002Fschedule",[39,68,70],{"class":69},"s_hVV"," \\\n",[39,72,74,77,80,83,86],{"class":41,"line":73},3,[39,75,76],{"class":56},"  @xiboplayer\u002Fxmds",[39,78,79],{"class":56}," @xiboplayer\u002Fxmr",[39,81,82],{"class":56}," @xiboplayer\u002Fcache",[39,84,85],{"class":56}," @xiboplayer\u002Fstats",[39,87,70],{"class":69},[39,89,91,94,97,100],{"class":41,"line":90},4,[39,92,93],{"class":56},"  @xiboplayer\u002Fsettings",[39,95,96],{"class":56}," @xiboplayer\u002Futils",[39,98,99],{"class":56}," @xiboplayer\u002Fsync",[39,101,102],{"class":56}," @xiboplayer\u002Fproxy\n",[39,104,106],{"class":41,"line":105},5,[39,107,109],{"emptyLinePlaceholder":108},true,"\n",[39,111,113],{"class":41,"line":112},6,[39,114,115],{"class":45},"# Or individual packages\n",[39,117,119,121,123,126],{"class":41,"line":118},7,[39,120,53],{"class":52},[39,122,57],{"class":56},[39,124,125],{"class":56}," @xiboplayer\u002Fxmds",[39,127,128],{"class":45},"    # just the CMS client\n",[39,130,132,134,136,138],{"class":41,"line":131},8,[39,133,53],{"class":52},[39,135,57],{"class":56},[39,137,82],{"class":56},[39,139,140],{"class":45},"   # just the offline cache\n",[142,143,145],"h2",{"id":144},"overview","Overview",[147,148,149,165],"table",{},[150,151,152],"thead",{},[153,154,155,159,162],"tr",{},[156,157,158],"th",{},"Package",[156,160,161],{},"Description",[156,163,164],{},"Key Exports",[166,167,168,186,207,227,247,264,284,304,321,338,361,378,398,418],"tbody",{},[153,169,170,178,181],{},[171,172,173],"td",{},[19,174,177],{"href":175,"rel":176},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fcore",[23],"@xiboplayer\u002Fcore",[171,179,180],{},"Player orchestration, collection cycle, offline mode",[171,182,183],{},[25,184,185],{},"PlayerCore",[153,187,188,195,198],{},[171,189,190],{},[19,191,194],{"href":192,"rel":193},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Frenderer",[23],"@xiboplayer\u002Frenderer",[171,196,197],{},"XLF layout rendering, transitions, actions",[171,199,200,203,204],{},[25,201,202],{},"RendererLite",", ",[25,205,206],{},"LayoutPool",[153,208,209,216,219],{},[171,210,211],{},[19,212,215],{"href":213,"rel":214},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fschedule",[23],"@xiboplayer\u002Fschedule",[171,217,218],{},"Campaigns, dayparting, interrupts, overlays",[171,220,221,203,224],{},[25,222,223],{},"ScheduleManager",[25,225,226],{},"InterruptScheduler",[153,228,229,236,239],{},[171,230,231],{},[19,232,235],{"href":233,"rel":234},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fxmds",[23],"@xiboplayer\u002Fxmds",[171,237,238],{},"CMS client (SOAP + REST dual transport)",[171,240,241,203,244],{},[25,242,243],{},"XmdsClient",[25,245,246],{},"RestClient",[153,248,249,256,259],{},[171,250,251],{},[19,252,255],{"href":253,"rel":254},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fxmr",[23],"@xiboplayer\u002Fxmr",[171,257,258],{},"Real-time push commands via WebSocket",[171,260,261],{},[25,262,263],{},"XmrWrapper",[153,265,266,273,276],{},[171,267,268],{},[19,269,272],{"href":270,"rel":271},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fcache",[23],"@xiboplayer\u002Fcache",[171,274,275],{},"Parallel chunk downloads, MD5 verification",[171,277,278,203,281],{},[25,279,280],{},"StoreClient",[25,282,283],{},"DownloadManager",[153,285,286,293,296],{},[171,287,288],{},[19,289,292],{"href":290,"rel":291},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fstats",[23],"@xiboplayer\u002Fstats",[171,294,295],{},"Proof-of-play tracking, log reporting",[171,297,298,203,301],{},[25,299,300],{},"StatsCollector",[25,302,303],{},"LogReporter",[153,305,306,313,316],{},[171,307,308],{},[19,309,312],{"href":310,"rel":311},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fsettings",[23],"@xiboplayer\u002Fsettings",[171,314,315],{},"CMS display settings with reactive updates",[171,317,318],{},[25,319,320],{},"DisplaySettings",[153,322,323,330,333],{},[171,324,325],{},[19,326,329],{"href":327,"rel":328},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fcrypto",[23],"@xiboplayer\u002Fcrypto",[171,331,332],{},"RSA key generation for XMR registration",[171,334,335],{},[25,336,337],{},"generateKeyPair",[153,339,340,347,350],{},[171,341,342],{},[19,343,346],{"href":344,"rel":345},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Futils",[23],"@xiboplayer\u002Futils",[171,348,349],{},"Logger, EventEmitter, config, fetchWithRetry",[171,351,352,203,355,203,358],{},[25,353,354],{},"EventEmitter",[25,356,357],{},"Config",[25,359,360],{},"CmsApi",[153,362,363,370,373],{},[171,364,365],{},[19,366,369],{"href":367,"rel":368},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fsw",[23],"@xiboplayer\u002Fsw",[171,371,372],{},"Service Worker for media caching",[171,374,375],{},[25,376,377],{},"SwMediaHandler",[153,379,380,387,390],{},[171,381,382],{},[19,383,386],{"href":384,"rel":385},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fsync",[23],"@xiboplayer\u002Fsync",[171,388,389],{},"Multi-display video wall synchronization",[171,391,392,203,395],{},[25,393,394],{},"SyncManager",[25,396,397],{},"computeChoreography",[153,399,400,407,410],{},[171,401,402],{},[19,403,406],{"href":404,"rel":405},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fproxy",[23],"@xiboplayer\u002Fproxy",[171,408,409],{},"CORS proxy, PWA server, sync relay",[171,411,412,203,415],{},[25,413,414],{},"createProxyApp",[25,416,417],{},"startServer",[153,419,420,427,430],{},[171,421,422],{},[19,423,426],{"href":424,"rel":425},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@xiboplayer\u002Fpwa",[23],"@xiboplayer\u002Fpwa",[171,428,429],{},"Complete browser-based player",[171,431,432],{},[25,433,434],{},"PwaPlayer",[142,436,438],{"id":437},"cms-communication","CMS communication",[15,440,441,443],{},[25,442,235],{}," provides two transports with identical API surfaces:",[445,446,447,454],"ul",{},[448,449,450,453],"li",{},[451,452,243],"strong",{}," (SOAP\u002FXML) — compatible with all CMS versions (v3-v7)",[448,455,456,458],{},[451,457,246],{}," (REST\u002FJSON) — 30% smaller payloads, ETag 304 caching",[15,460,461],{},"Protocol auto-detection selects the best transport at startup. Both converge on the same ContentStore mirror paths.",[15,463,464,467],{},[451,465,466],{},"XMDS methods",": RegisterDisplay, RequiredFiles, Schedule, GetResource, NotifyStatus, MediaInventory, BlackList, SubmitStats, SubmitScreenShot, SubmitLog",[15,469,470,473],{},[451,471,472],{},"XMR commands",": collectNow, screenshot, changeLayout, overlayLayout, revertToSchedule, purgeAll, dataUpdate, triggerWebhook, commandAction, criteriaUpdate",[142,475,477],{"id":476},"downloads-and-caching","Downloads and caching",[15,479,480,482],{},[25,481,272],{}," splits large files into 4 parallel 50MB chunks for fast downloads. Features:",[445,484,485,488,491,494],{},[448,486,487],{},"MD5 verification per chunk",[448,489,490],{},"Download resume from last successful chunk",[448,492,493],{},"CMS-configured download time windows",[448,495,496],{},"Font CSS URL rewriting to local cache paths",[142,498,500],{"id":499},"rendering","Rendering",[15,502,503,505],{},[25,504,194],{}," parses XLF (Xibo Layout Format) and renders to DOM:",[147,507,508,518],{},[150,509,510],{},[153,511,512,515],{},[156,513,514],{},"Widget type",[156,516,517],{},"Implementation",[166,519,520,531,542,553,561,569,579],{},[153,521,522,525],{},[171,523,524],{},"Video",[171,526,527,530],{},[25,528,529],{},"\u003Cvideo>"," with HLS.js fallback",[153,532,533,536],{},[171,534,535],{},"Image",[171,537,538,541],{},[25,539,540],{},"\u003Cimg>"," with scaleType, align\u002Fvalign",[153,543,544,547],{},[171,545,546],{},"Audio",[171,548,549,552],{},[25,550,551],{},"\u003Caudio>"," with visualization overlay",[153,554,555,558],{},[171,556,557],{},"PDF",[171,559,560],{},"PDF.js canvas (lazy-loaded)",[153,562,563,566],{},[171,564,565],{},"Text\u002FTicker",[171,567,568],{},"iframe via GetResource",[153,570,571,574],{},[171,572,573],{},"Web page",[171,575,576],{},[25,577,578],{},"\u003Ciframe src=\"...\">",[153,580,581,584],{},[171,582,583],{},"All CMS widgets",[171,585,568],{},[142,587,589],{"id":588},"source","Source",[445,591,592,599,602],{},[448,593,594],{},[19,595,598],{"href":596,"rel":597},"https:\u002F\u002Fgithub.com\u002Fxibo-players\u002Fxiboplayer",[23],"GitHub: xibo-players\u002Fxiboplayer",[448,600,601],{},"1744 tests across 54 suites",[448,603,604],{},"License: AGPL-3.0-or-later",[606,607,608],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":35,"searchDepth":73,"depth":73,"links":610},[611,612,613,614,615],{"id":144,"depth":49,"text":145},{"id":437,"depth":49,"text":438},{"id":476,"depth":49,"text":477},{"id":499,"depth":49,"text":500},{"id":588,"depth":49,"text":589},"All @xiboplayer\u002F* npm packages with purpose, key exports, and dependencies","md",{"order":49},"\u002Fdocs\u002Fsdk\u002Fpackages",{"title":5,"description":616},"docs\u002Fsdk\u002Fpackages","O-3kzbsgn1a1jt8yc314FbvxE25c_FKwkt2DDWUa7z0",1775148113027]