{"_id":"bloomreach-experience-ng-sdk","_rev":"93-e504d1abf04ea73c4a649eddd3406adf","name":"bloomreach-experience-ng-sdk","dist-tags":{"beta":"0.1.0","latest":"0.3.2"},"versions":{"0.1.0":{"name":"bloomreach-experience-ng-sdk","version":"0.1.0","_id":"bloomreach-experience-ng-sdk@0.1.0","maintainers":[{"name":"rkauffman","email":"robbertkauffman@gmail.com"}],"dist":{"shasum":"8ab25634ab82a260460e1eaccd713e62dd4bad6b","tarball":"https://registry.npmjs.org/bloomreach-experience-ng-sdk/-/bloomreach-experience-ng-sdk-0.1.0.tgz","fileCount":93,"integrity":"sha512-VvabQvvLijAPvsLgNUft8ReTJcUG81Kc+6ViJmtgN/MjZbRuV2VoL8OeShnKIX51D/VLtt5106PY+NdM4bo0vA==","signatures":[{"sig":"MEYCIQCL7RCqAft7fMz4K/fgDsNvWixxmVs0ME2rXXSlb0u5PwIhAOCkKx5RC24wVMl4Z4NUMMm3x4Utndx9GVcn/stWPi/G","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1059764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbz4VaCRA9TVsSAnZWagAAcxoP/2Z4OTuwmUFasC59zVgW\nzRCGTnwY9T6mV5+OFTCShC59cLxRVGBYtmfnLRETVmm+c+faJvS9qLmfTRG+\nCVtwsrxwQGEXET7v8B2vVOpu/zE+G6Wq80p8KrYCO75n3bId4u6H3AzsIsnm\n0QNZ92Zb9HsU7WDn8lPKbhpomu8BgJXNh4DcqznlqWJRZbYNtoZL0Lit03bY\n3NKLm+QH6JumXRommFCpc69tJDd/D/Zm+QX1hG+LkYCqlLCKtrNMU/miPfWV\nNMfuI86LaJ7tMdAszQSfJxegEWV7VmFtberlajkQs1qxKHGjgoHsFd6Tu32g\nzI69gEO4HfzPj3rwEKVcdfskp5YbPHDdNajK48bXao5bYU5aEBuJHsvw0UAs\nJatnF0614FcPbxzuAiIA5dUvU/GvodziP+6VYmQHW85qNMpVZzCDYZV/neiC\nINPyfbJk6iJMcOlUrwpKoos50EERfb6phDj4CKTA3zD2fc+dBRW7E1/5RCY+\nUtcr+YfWz7jGuR1WBOX7YYLVi8OHRI/OyK4TcDYYiuo3TS9NrpEoqJWBfdT5\nwLMKi7WMzO3o4+PArLYV2SEj1dwKSVlEBOQ/2fYrcVw/fXMeJt0WSGFaxhy2\nSTENgVX5/UH7ogwcYNfwJd+9qCAem9lCdo6EmR+QGA2XAbre812Yx4SA0wnO\naEeN\r\n=GHkM\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/bloomreach-experience-ng-sdk.js","main":"bundles/bloomreach-experience-ng-sdk.umd.js","fesm5":"fesm5/bloomreach-experience-ng-sdk.js","es2015":"fesm2015/bloomreach-experience-ng-sdk.js","module":"fesm5/bloomreach-experience-ng-sdk.js","esm2015":"esm2015/bloomreach-experience-ng-sdk.js","typings":"bloomreach-experience-ng-sdk.d.ts","_npmUser":{"name":"rkauffman","email":"robbertkauffman@gmail.com"},"fesm2015":"fesm2015/bloomreach-experience-ng-sdk.js","metadata":"bloomreach-experience-ng-sdk.metadata.json","_npmVersion":"6.4.1","description":"SDK for powering content and components in Angular applications by [BloomReach Experience](https://www.bloomreach.com/en/products/experience).  This library makes integrating an Angular app with BloomReach Experience a breeze. It  supports both client-sid","directories":{},"sideEffects":false,"_nodeVersion":"10.11.0","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^6.2.2","jsonpointer":"^4.0.1","@angular/core":"^6.0.0-rc.0 || ^6.0.0","@angular/http":"^6.0.0-rc.0 || ^6.0.0","path-to-regexp":"^2.2.1","@angular/common":"^6.0.0-rc.0 || ^6.0.0","@angular/router":"^6.0.0-rc.0 || ^6.0.0","@types/path-to-regexp":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/bloomreach-experience-ng-sdk_0.1.0_1540326745896_0.3105234038692464","host":"s3://npm-registry-packages"}},"0.1.1-rc":{"name":"bloomreach-experience-ng-sdk","version":"0.1.1-rc","_id":"bloomreach-experience-ng-sdk@0.1.1-rc","maintainers":[{"name":"abogaart","email":"arthur.bogaart@bloomreach.com"},{"name":"br-mikedreynolds","email":"mike.reynolds@bloomreach.com"},{"name":"dokmic","email":"m@dokol.in"},{"name":"joerideg","email":"joerideg@gmail.com"},{"name":"kenansalic","email":"kenan.salic@gmail.com"},{"name":"mdenburger","email":"mdenburger@gmail.com"},{"name":"namendes","email":"namendes@gmail.com"},{"name":"pcentgraf-bloomreach","email":"peter.centgraf@bloomreach.com"},{"name":"rkauffman","email":"robbertkauffman@gmail.com"}],"dist":{"shasum":"2b7934ad35352a68cbeb01bfc0f62f91eed680da","tarball":"https://registry.npmjs.org/bloomreach-experience-ng-sdk/-/bloomreach-experience-ng-sdk-0.1.1-rc.tgz","fileCount":91,"integrity":"sha512-4ZVp7QVXv+/lNqgjOeGZOawE/xZzHZTtLVZ47J7kxkFdiG8L0ji2rwS8EoqRXsE6H6QQCRPeZuQBJyfthxiohw==","signatures":[{"sig":"MEQCIAUZy+yWqXikMylZitQub1zDrnyj37ipenbzmNvsABnsAiBnz26VRvkByeANZJXzLqq5zxAz7bCc9sMxCnzkjfRdRA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1031994,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUcFHCRA9TVsSAnZWagAARc4P/2+ee6zES9QjY9DcKkBa\ncEzl303MQKivBXuh2YVUz7G+/bpYhg4WXJ/2PJIdXoDVF4olFi6QKXdzIK4n\nGTGAXwRvpCDrJEx3uKdwdFPuJo7NvsKGd1BtC+1135j62Fr3xI43xiqN81L7\nGgIhkAv+/eVEh27SitSadO66/a3F2MZGMHmpsvLAxekG1kfEnQ4xEJxzM07L\nfJG6rYPnQLB53RQw2UH79FUebcW9gtJPT8Kb1ld3EwG8JaJPZ2H+ck0PSKp1\n6mnyY+V38b3n7g7ZWOa11eHJuczfpzqECeiTpiSo9YZGs5wBhRj2UsVgKqov\n5P2j4kP0DjC5OBwmh6JA6ujZorM4ovqthxmJjI6E8DLlJgRPHksMhKXvZGY4\nBUe94rI/EIWPPGUzO7CZpksjqGXhsTExlTJdN3ZT6zBcV7ZjN31Sryql4+d1\nKkK2AIW9hAgj3lWdoc+tqanmtYyP4E5KlXeDexMVFK97/58TBvFQLUs7uf1I\n4mPbymVMVklTOckSL8ItrvANSRL1z7y1puEz28xZ5X8Dywm+3aWik69GweMt\npcDxmJwywzt/knzMdeLAI4BuWsJOMVr7wTD6DrVIG9+gYa3E84pJATCKPS02\noS496qpQIMkamIdwTu/myFnZGdmnkxQdvLZCjibXVAdg4UokoabNZnzVdZJT\n/90x\r\n=DISA\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/bloomreach-experience-ng-sdk.js","main":"bundles/bloomreach-experience-ng-sdk.umd.js","_from":"file:dist/bloomreach-experience-ng-sdk/bloomreach-experience-ng-sdk-0.1.1-rc.tgz","fesm5":"fesm5/bloomreach-experience-ng-sdk.js","es2015":"fesm2015/bloomreach-experience-ng-sdk.js","module":"fesm5/bloomreach-experience-ng-sdk.js","esm2015":"esm2015/bloomreach-experience-ng-sdk.js","typings":"bloomreach-experience-ng-sdk.d.ts","_npmUser":{"name":"dokmic","email":"m@dokol.in"},"fesm2015":"fesm2015/bloomreach-experience-ng-sdk.js","metadata":"bloomreach-experience-ng-sdk.metadata.json","_resolved":"","_integrity":"","_npmVersion":"6.4.1","directories":{},"sideEffects":false,"_nodeVersion":"10.10.0","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^6.2.2","jsonpointer":"^4.0.1","@angular/core":"^6.0.0-rc.0 || ^6.0.0","@angular/http":"^6.0.0-rc.0 || ^6.0.0","path-to-regexp":"^2.2.1","@angular/common":"^6.0.0-rc.0 || ^6.0.0","@angular/router":"^6.0.0-rc.0 || ^6.0.0","@types/path-to-regexp":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/bloomreach-experience-ng-sdk_0.1.1-rc_1548861767336_0.6365575942642663","host":"s3://npm-registry-packages"}},"0.1.1-rc1":{"name":"bloomreach-experience-ng-sdk","version":"0.1.1-rc1","_id":"bloomreach-experience-ng-sdk@0.1.1-rc1","maintainers":[{"name":"abogaart","email":"arthur.bogaart@bloomreach.com"},{"name":"br-mikedreynolds","email":"mike.reynolds@bloomreach.com"},{"name":"dokmic","email":"m@dokol.in"},{"name":"joerideg","email":"joerideg@gmail.com"},{"name":"kenansalic","email":"kenan.salic@gmail.com"},{"name":"mdenburger","email":"mdenburger@gmail.com"},{"name":"namendes","email":"namendes@gmail.com"},{"name":"pcentgraf-bloomreach","email":"peter.centgraf@bloomreach.com"}],"dist":{"shasum":"c36b28b439faa82653df1c00ac8b03d29baa840c","tarball":"https://registry.npmjs.org/bloomreach-experience-ng-sdk/-/bloomreach-experience-ng-sdk-0.1.1-rc1.tgz","fileCount":93,"integrity":"sha512-3czuEYPwcwh8Q7b+VmJ2w8/SftjS3cmev36iYNBrJrZVGbdTSD5+s99V1KVJPYYsMhnDxWK0TS/zrY5/Js2x7g==","signatures":[{"sig":"MEUCIHHSfxWnYGHwBADqSw1c8K1kBDqyAkBRVIpIKZCMXxqhAiEAl46gbapRJcG1G5uZM1qMuL/YD+aFAk6MV4t3yub31bE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1062082,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUcOCCRA9TVsSAnZWagAAcesP/A6THehq8M45aHMda6b2\nE8f2as/bKZDpWGGhOqBHhSYIKWiAt9rT/UxjjLvtlyRnLojcYoB+jtJvbdgK\nOzHYa49DZgJcRW48K8kEwNSP30mGD6DGzfDXndsOtk2ft+NmJbqCnrgye33k\n5hMSqdh6FZJEiMHUQ3wWfwnA3tV0+MtKVWSFwWKKAsoErf8ddlg3bY2LhsKu\nXNxPyImpJDeo5enZsUbcBxRJsga1A0sUlz8pRToH+9AzPthmHwq2cUo9hsBv\nwPylAvQf4lnwSPqz+TkItd1IGBS9mabdpIxC1QlmKtx0e+5NDzUWl9qMq+ZY\nZL067+jirbslpS3T6Ktfhcvidky++PDcO30JdhcM7Wzb6PRDOp1n+WrYYmM/\nITOWJQE85g/32cTQs6iMu2nPYJI5cmLHdYEn9T/KZKbPTUH0SEW8TQFyGPMn\nUQWPr3keI1188YTVpGiSJO/VZXgBiiajpsFjVofHzgeK6S/SisqsGd4/MObR\niDugS/bzycKk4hfW5NrcC2JZCkAxgcOYn2ZZD1bm8uFkMd/dy6sL+y+xPhjY\nGTg2jyUzftbgziqN+NcdRfROHP9wY4RExCqMjFte/GoCG6WhtviRWf1p84XS\nRrn1kKeOSMVN8eeorWgnh3od/fw33fgVlrRjbK6EhUXZQCEi22QWGMbGu0Xt\nTdSo\r\n=hNEE\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/bloomreach-experience-ng-sdk.js","main":"bundles/bloomreach-experience-ng-sdk.umd.js","fesm5":"fesm5/bloomreach-experience-ng-sdk.js","es2015":"fesm2015/bloomreach-experience-ng-sdk.js","module":"fesm5/bloomreach-experience-ng-sdk.js","esm2015":"esm2015/bloomreach-experience-ng-sdk.js","typings":"bloomreach-experience-ng-sdk.d.ts","_npmUser":{"name":"dokmic","email":"m@dokol.in"},"fesm2015":"fesm2015/bloomreach-experience-ng-sdk.js","metadata":"bloomreach-experience-ng-sdk.metadata.json","_npmVersion":"6.4.1","description":"SDK for powering content and components in Angular applications by [BloomReach Experience](https://www.bloomreach.com/en/products/experience).  This library makes integrating an Angular app with BloomReach Experience a breeze. It  supports both client-sid","directories":{},"sideEffects":false,"_nodeVersion":"10.10.0","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^6.2.2","jsonpointer":"^4.0.1","@angular/core":"^6.0.0-rc.0 || ^6.0.0","@angular/http":"^6.0.0-rc.0 || ^6.0.0","path-to-regexp":"^2.2.1","@angular/common":"^6.0.0-rc.0 || ^6.0.0","@angular/router":"^6.0.0-rc.0 || ^6.0.0","@types/path-to-regexp":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/bloomreach-experience-ng-sdk_0.1.1-rc1_1548862337165_0.7424127889937371","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"bloomreach-experience-ng-sdk","version":"0.2.1","_id":"bloomreach-experience-ng-sdk@0.2.1","maintainers":[{"name":"abogaart","email":"arthur.bogaart@bloomreach.com"},{"name":"ajbanck","email":"arent-jan.banck@bloomreach.com"},{"name":"br-mikedreynolds","email":"mike.reynolds@bloomreach.com"},{"name":"dokmic","email":"m@dokol.in"},{"name":"joerideg","email":"joerideg@gmail.com"},{"name":"jtsengyc","email":"jtsengyc@gmail.com"},{"name":"kenansalic","email":"kenan.salic@gmail.com"},{"name":"mdenburger","email":"mdenburger@gmail.com"},{"name":"michiel_eggermont","email":"michiel.eggermont@bloomreach.com"},{"name":"michielrop","email":"michiel.rop@bloomreach.com"},{"name":"mjmetter","email":"michael.metternich@bloomreach.com"},{"name":"mpalenov","email":"maxim.palenov@bloomreach.com"},{"name":"namendes","email":"namendes@gmail.com"},{"name":"pcentgraf-bloomreach","email":"peter.centgraf@bloomreach.com"},{"name":"sshepelevich","email":"sergey.shepelevich@bloomreach.com"}],"dist":{"shasum":"42ffae44a62be879abcb9e0e99dbcb1e395b6a7b","tarball":"https://registry.npmjs.org/bloomreach-experience-ng-sdk/-/bloomreach-experience-ng-sdk-0.2.1.tgz","fileCount":92,"integrity":"sha512-Og5ont1alNf3z0zOCt46xAc6CEq4ygc8hpVc0Pvuyfd7fOVuCsSdXUS7zNL+r7aIDuQPMlOP6tnCAi554JFsEg==","signatures":[{"sig":"MEUCIDDkyNT4JaZPOHFaFrAPLlETV5U7AkEFrsQPlVPNHPDuAiEA58188e3hn3GXbHkym8Q7wi6bD6GG6FpGis9tNN94jrU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1120914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUp/pCRA9TVsSAnZWagAAm8UP/A6pxfTunjE54XnBIqr3\n+CxW0YL0yzzMy72MKfqXZ4sqNTS+IrtKOOOWlBrbGk5Kdek+CJy5yYe40Pms\nYuVBsAzUZqxPYxAlUQ0+RJ1nIw8kg1TnhdPmr4X82d9UqiyPyAJmr7LnXMvX\nQ35dSn/O83hA5xxHbvj+0WSbmxF2ePExuk7xMa+toSlc2WPJzcK2PyLZobvl\n2BaEK/Ri02+JJLNFncVgyYZ/RPsMxXodWd7q+PTgHQ7JYDZA0O1nPG0nliWL\n4UISiYF7KXcZLUpgOLBqX41Fqtp9EDwpO76tmxRgCrt3cqx0becTJnzwfva1\nefq/aW6KnT/H3pqhDZF1tuPnN5eq6Xzmt/wpo7os0tq6ITVZi+4aXLxD/FWu\nUf9mLCXfRolMTnY7hopu+xdex618kMD2Ky07BMJVgI097WzG/J5TT761AG8N\nNmsmWsjw+wiGYPsIAykhKWJ9XDYVQGmPFuIyipNOwTIz0Lsq2i4W49rtUgTM\nCAro3KHohPIV2S26W31U80PdJTvf8RcSItLlQc+A5/eqBEFG4Zf2zrLy26DI\nHzPPKtVpT4D/wOZuqdTzzzkSQCF6qOrGslm+i2sB93RfFdL3BWIIJ6MRkKg6\nE6hBRFDKPzqCP3U6tFuyr+0GdA+FxnRXG+rdcse9wQNKpwD3ElWQwKjUr/6S\nLvAR\r\n=bE0f\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/bloomreach-experience-ng-sdk.js","main":"bundles/bloomreach-experience-ng-sdk.umd.js","_from":"file:dist/bloomreach-experience-ng-sdk/bloomreach-experience-ng-sdk-0.2.1.tgz","fesm5":"fesm5/bloomreach-experience-ng-sdk.js","es2015":"fesm2015/bloomreach-experience-ng-sdk.js","module":"fesm5/bloomreach-experience-ng-sdk.js","esm2015":"esm2015/bloomreach-experience-ng-sdk.js","typings":"bloomreach-experience-ng-sdk.d.ts","_npmUser":{"name":"dokmic","email":"m@dokol.in"},"fesm2015":"fesm2015/bloomreach-experience-ng-sdk.js","metadata":"bloomreach-experience-ng-sdk.metadata.json","_resolved":"","_integrity":"","_npmVersion":"6.4.1","description":"SDK for powering content and components in Angular applications by [BloomReach Experience](https://www.bloomreach.com/en/products/experience).  This library makes integrating an Angular app with BloomReach Experience a breeze. It  supports both client-sid","directories":{},"sideEffects":false,"_nodeVersion":"10.10.0","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^6.2.2","jsonpointer":"^4.0.1","@angular/core":"^6.0.0-rc.0 || ^6.0.0","@angular/http":"^6.0.0-rc.0 || ^6.0.0","path-to-regexp":"^2.2.1","@angular/common":"^6.0.0-rc.0 || ^6.0.0","@angular/router":"^6.0.0-rc.0 || ^6.0.0","@types/path-to-regexp":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/bloomreach-experience-ng-sdk_0.2.1_1565695977297_0.06730611102725015","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"bloomreach-experience-ng-sdk","version":"0.3.0","_id":"bloomreach-experience-ng-sdk@0.3.0","maintainers":[{"name":"abogaart","email":"arthur.bogaart@bloomreach.com"},{"name":"ajbanck","email":"arent-jan.banck@bloomreach.com"},{"name":"br-mikedreynolds","email":"mike.reynolds@bloomreach.com"},{"name":"dokmic","email":"m@dokol.in"},{"name":"joerideg","email":"joerideg@gmail.com"},{"name":"jtsengyc","email":"jtsengyc@gmail.com"},{"name":"kenansalic","email":"kenan.salic@gmail.com"},{"name":"mdenburger","email":"mdenburger@gmail.com"},{"name":"michiel_eggermont","email":"michiel.eggermont@bloomreach.com"},{"name":"michielrop","email":"michiel.rop@bloomreach.com"},{"name":"mjmetter","email":"michael.metternich@bloomreach.com"},{"name":"mpalenov","email":"maxim.palenov@bloomreach.com"},{"name":"namendes","email":"namendes@gmail.com"},{"name":"pcentgraf-bloomreach","email":"peter.centgraf@bloomreach.com"},{"name":"shekhar.kumar","email":"shekhar.kumar@bloomreach.com"},{"name":"sshepelevich","email":"sergey.shepelevich@bloomreach.com"}],"dist":{"shasum":"0556d7978398bd40899ce4497dbb90f843b4f743","tarball":"https://registry.npmjs.org/bloomreach-experience-ng-sdk/-/bloomreach-experience-ng-sdk-0.3.0.tgz","fileCount":92,"integrity":"sha512-bVsHyTs3Bz3ynQeTQR8Ow/oanB/mvo4xjcEtbAzEhu7Flp8JIoX4TToYDsQJplI00oAHWjgO18OELiSBfVlwng==","signatures":[{"sig":"MEQCIH2FyMYW8GMK6/mIq/0VWoyDdSr7ZznuMK/ebGM4pdMXAiAUAvGp94W/dOg7mWCjO6gyoPKSVZn85/jgdPsScs1veg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1430666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdl1qWCRA9TVsSAnZWagAAteYP/3q9Z6/mvejSDTZ0Hj4K\nHTudHZvUpgeBnFGBPABHEcE23js0e+it1++k4Y+UZWPhiY3BNg8APt6ODPiV\nN1zhCkePClooZSy3e3uyxsHWai2xtXkfB/xrqEqq9cKBjw7NMz19VRQoneVd\nU9k8czo79+ihLKafZBcrECDo+TyHO8wVINXdF9drL6GnLa9KgT66ofW1UpYs\niEAvI74RBPc/10Erc09/gs353QOu3mZqWRR1A6ek63rXlCJ4jCeeTOXSX99Z\n6DbFpEig367lkHKfZRZXmU4NdIwOHmqRmPHlsMR1U8y4GCFasLjwKKDJeRM0\n3G3Ru+ot00aHLNI6e7H+N0Fh8ELbo6qzDlj9FMDgEphLdt+IXnnGHtAi4MhM\n76ltBfLXeGaXudgTRmWaZaSZcMsG1fw2ryAXlxrrvqbmfHmDjC0FuBuVs0Fz\n/1pNofGOKvhvhdf3g0is4Tk0GM8FIZvCv19Sisg3eVgQUC/dy1cMGPAQ8wrS\nx40trUT/7qCrhY/4nF7DajIE4S+Iw6xG275GLwSfAZLXNrMBVJ651ZdXfCLS\nnjMGQeobNLN120PCQrpwKuXD/WFJGJ3bUxIisgkwo0WUj/NvI+FdJkEwP1eR\nwBh+IIb7HPvjzcj2Icu4ndbW9ZNIfj8iHLRG4Tvhuvt+w8j8yfuQKLxhHvpw\nMYCe\r\n=ymcq\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/bloomreach-experience-ng-sdk.js","main":"bundles/bloomreach-experience-ng-sdk.umd.js","_from":"file:bloomreach-experience-ng-sdk-0.3.0.tgz","fesm5":"fesm5/bloomreach-experience-ng-sdk.js","es2015":"fesm2015/bloomreach-experience-ng-sdk.js","module":"fesm5/bloomreach-experience-ng-sdk.js","esm2015":"esm2015/bloomreach-experience-ng-sdk.js","typings":"bloomreach-experience-ng-sdk.d.ts","_npmUser":{"name":"dokmic","email":"m@dokol.in"},"fesm2015":"fesm2015/bloomreach-experience-ng-sdk.js","metadata":"bloomreach-experience-ng-sdk.metadata.json","_resolved":"","_integrity":"","_npmVersion":"6.10.3","description":"SDK for powering content and components in Angular applications by [BloomReach Experience](https://www.bloomreach.com/en/products/experience).  This library makes integrating an Angular app with BloomReach Experience a breeze. It  supports both client-sid","directories":{},"sideEffects":false,"_nodeVersion":"12.10.0","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^6.2.2","jsonpointer":"^4.0.1","@angular/core":"^6.0.0-rc.0 || ^6.0.0","@angular/http":"^6.0.0-rc.0 || ^6.0.0","path-to-regexp":"^2.2.1","@angular/common":"^6.0.0-rc.0 || ^6.0.0","@angular/router":"^6.0.0-rc.0 || ^6.0.0","@types/path-to-regexp":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/bloomreach-experience-ng-sdk_0.3.0_1570200214042_0.3291412691366462","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"bloomreach-experience-ng-sdk","version":"0.3.1","_id":"bloomreach-experience-ng-sdk@0.3.1","maintainers":[{"name":"abogaart","email":"arthur.bogaart@bloomreach.com"},{"name":"ajbanck","email":"arent-jan.banck@bloomreach.com"},{"name":"br-mikedreynolds","email":"mike.reynolds@bloomreach.com"},{"name":"dokmic","email":"m@dokol.in"},{"name":"joerideg","email":"joerideg@gmail.com"},{"name":"jtsengyc","email":"jtsengyc@gmail.com"},{"name":"kenansalic","email":"kenan.salic@gmail.com"},{"name":"mdenburger","email":"mdenburger@gmail.com"},{"name":"michiel_eggermont","email":"michiel.eggermont@bloomreach.com"},{"name":"michielrop","email":"michiel.rop@bloomreach.com"},{"name":"mjmetter","email":"michael.metternich@bloomreach.com"},{"name":"mpalenov","email":"maxim.palenov@bloomreach.com"},{"name":"namendes","email":"namendes@gmail.com"},{"name":"pcentgraf-bloomreach","email":"peter.centgraf@bloomreach.com"},{"name":"shekhar.kumar","email":"shekhar.kumar@bloomreach.com"},{"name":"sshepelevich","email":"sergey.shepelevich@bloomreach.com"}],"dist":{"shasum":"c6a23e8fd840f8f93ccfd63521f53d297328e0e0","tarball":"https://registry.npmjs.org/bloomreach-experience-ng-sdk/-/bloomreach-experience-ng-sdk-0.3.1.tgz","fileCount":92,"integrity":"sha512-u8NYhqBE8GN+Oca+n0vpE3ev03Cjtr8NRsqUxbniDObOiRZqbKu4kEHowmx6nq2uoUeBKmpQyfgXH+f7CoR2Wg==","signatures":[{"sig":"MEYCIQCXFGltHx+VIqdqqMq2ewxlXcKyckihHiWFc6gnvESqqQIhAPqRWy+W9nVCDJNQZpcgTP2rdY0v7jaOc8+wzlVMJ3iz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1426292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpdisCRA9TVsSAnZWagAACXAP+gNy+WRMwN5VaFj+7j+Z\n/PQYpZGOP8s/up9NmSICWbvBjlZZ0GgqukXuMUhMh+kk5RkAgNgQ+Se5Krl8\n0Yaa+hbE2VRwLiL9sxIP4SJoHnS+LSTDzk7Mcc2Ue4/rtQVrRUtLhTzhWF3C\ncQZQjRSwE9/6cMVybrYBwZn0Bnf/HQQK2MamBCXOyKHw68aoBOcBxM5D+uZQ\n/ZXakbzDtlaq75bmwUcbzdiJz8GrXX93e/I3bt60/ddWpnbooqdiESdPzMgW\nQiFvHXIFQmQu4GXruW2dLPCFTENwB21zdRCASbtp02V3HlMsOoYZ+rE7PwgL\nzqrxs6lpPgRfn4tB1macGOVsq+KpgnHWbp0oN4/2K5AHEF9WLJOtwhRAW+JC\nZaY5RquWh0Tgi/jZc40YIdVss9p35GGWRec2112UmS5a0vAUrXQZDT7a41Ur\nM8sKcPb1SRFt0O420HZffaO86OcpzJnrxR1lzv95Nz8Zsc3TyQyCdejriAiU\nOD1eaylTFcPS4iHA9VX99tXVzBzV+XdVoumCl1ls0tK10h9crrfM1JODaVtr\nocawX0Kvnt9uMZ7u1OxDsBSb6DmsO2QiwgRCChyaOxzAJm5CRTBEh/5hHzr5\nMKRcRH+Sml/dKgGGR33kY1UPhV9ZuH+jMFxUJBjx9h/9fmPPsR5ABVBdYkow\nrJ9M\r\n=jmld\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/bloomreach-experience-ng-sdk.js","main":"bundles/bloomreach-experience-ng-sdk.umd.js","_from":"file:bloomreach-experience-ng-sdk-0.3.1.tgz","fesm5":"fesm5/bloomreach-experience-ng-sdk.js","es2015":"fesm2015/bloomreach-experience-ng-sdk.js","module":"fesm5/bloomreach-experience-ng-sdk.js","esm2015":"esm2015/bloomreach-experience-ng-sdk.js","typings":"bloomreach-experience-ng-sdk.d.ts","_npmUser":{"name":"dokmic","email":"m@dokol.in"},"fesm2015":"fesm2015/bloomreach-experience-ng-sdk.js","metadata":"bloomreach-experience-ng-sdk.metadata.json","_resolved":"","_integrity":"","_npmVersion":"6.10.3","description":"SDK for powering content and components in Angular applications by [BloomReach Experience](https://www.bloomreach.com/en/products/experience).  This library makes integrating an Angular app with BloomReach Experience a breeze. It  supports both client-sid","directories":{},"sideEffects":false,"_nodeVersion":"12.10.0","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^6.2.2","jsonpointer":"^4.0.1","@angular/core":"^6.0.0-rc.0 || ^6.0.0","@angular/http":"^6.0.0-rc.0 || ^6.0.0","path-to-regexp":"^2.2.1","@angular/common":"^6.0.0-rc.0 || ^6.0.0","@angular/router":"^6.0.0-rc.0 || ^6.0.0","@types/path-to-regexp":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/bloomreach-experience-ng-sdk_0.3.1_1571149995573_0.8076048449907414","host":"s3://npm-registry-packages"}},"0.3.2":{"name":"bloomreach-experience-ng-sdk","version":"0.3.2","_id":"bloomreach-experience-ng-sdk@0.3.2","maintainers":[{"name":"abogaart","email":"arthur.bogaart@bloomreach.com"},{"name":"ajbanck","email":"arent-jan.banck@bloomreach.com"},{"name":"bcanvural","email":"bcanvural@gmail.com"},{"name":"br-mikedreynolds","email":"mike.reynolds@bloomreach.com"},{"name":"brdroz","email":"josh.linder@gmail.com"},{"name":"brxm","email":"XM-Frontend-Chapter@bloomreach.com"},{"name":"davidboyd1","email":"david@davidboyd.com"},{"name":"dmartino11","email":"dmartino11@yahoo.com"},{"name":"dokmic","email":"m@dokol.in"},{"name":"drq","email":"drq@nxfinc.com"},{"name":"gijshendrix","email":"gijs.hendrix@bloomreach.com"},{"name":"joerideg","email":"joerideg@gmail.com"},{"name":"jtsengyc","email":"jtsengyc@gmail.com"},{"name":"kholmesbr","email":"kev.holmes@bloomreach.com"},{"name":"kpletcher","email":"kevin@bloomreach.com"},{"name":"lachire","email":"charlie.chen@bloomreach.com"},{"name":"michiel_eggermont","email":"michiel.eggermont@bloomreach.com"},{"name":"michielrop","email":"michiel.rop@bloomreach.com"},{"name":"mjmetter","email":"michael.metternich@bloomreach.com"},{"name":"mpalenov","email":"maxim.palenov@bloomreach.com"},{"name":"nmendes","email":"namendes@gmail.coM"},{"name":"ntrajkovski","email":"nikola.trajkovski@bloomreach.com"},{"name":"pauledwardsbloomreach","email":"paul.edwards@bloomreach.com"},{"name":"pcentgraf-bloomreach","email":"peter.centgraf@bloomreach.com"},{"name":"plenselink","email":"pieter.lenselink@Bloomreach.com"},{"name":"ricardomartins","email":"ricardo.martins@bloomreach.com"},{"name":"shekhar.kumar","email":"shekhar.kumar@bloomreach.com"},{"name":"smazza","email":"samantha.mazza@bloomreach.com"},{"name":"sshepelevich","email":"sergey.shepelevich@bloomreach.com"},{"name":"stefmz","email":"stefanos.maziotis@bloomreach.com"},{"name":"tom.washek","email":"tom.washek@bloomreach.com"},{"name":"vlets","email":"georgevle93@gmail.com"}],"dist":{"shasum":"cda2ffcc7d58b5fd65a385ad7b7da6d46f933d69","tarball":"https://registry.npmjs.org/bloomreach-experience-ng-sdk/-/bloomreach-experience-ng-sdk-0.3.2.tgz","fileCount":92,"integrity":"sha512-+98ikT0elEIpByvEG2cI6iTMuM5AL99KQXyS0C6EQEqiMCrbV1MdVjX9pYYvboafvvV63g8XqX1f5irx6grZxw==","signatures":[{"sig":"MEUCIQCwwe7Kq5USAbmEPJfvYttgB8Delmujp3OS8U+HFNoHZQIgIqVUfaOANkGRZ5C8keiqBvUXsnAwQTExohC/K/zH1J4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1433158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2k4BCRA9TVsSAnZWagAACO0P/0gGJ1kabX4kl5h1fdIp\ne0H0zF7rndabgpi67YrZXET4Sc2fX/3k9jn8rwGm0YfW8Hbgc6n9FWfTaGJn\nKvLM5T3cYT+Hsa43tMAUlGhjmmxtK4GdWEBkuPKjgP7sbg96EIJGa27L8p4L\ne/nuT/EHbSaoBoQDTAQTKdTvFLNlXJHVlOe5pwLJz8bPjVmO3UWTgPCEvemp\ngRQ6n9h6ypc0crTj72jYw7pD7DvrDVmUoeHxh2MuPynAA26zqdbKZtSesv1Y\nvmshQJ5C6lMGu5vOrBBlyOXIUiJ8WFRHViaSFRVYtJT1r1BRVZe1tBdq/F2K\naEdeArX0d3JaZWSvAMVMmMsxWCfveUGAtjEynVlEgSoRcgftodSXtENakyyD\nUgzz5vIqVObjeZdv0elM+IDkABrX2LzcRWdbzyh3kmOen39uK/HeO+PkIH1f\nIXnSy8XaKYm/PR5GCz2OrHsQj893s62qin552tlDsEMP0ru45zWA082rGw4f\nI8vvyHhE3WPO7E3ZnVxMiTXxOBv1mxK0PuhSc2UNeuNqBaYNO/BDNVOv8qFK\noQRFi27yNL05iQa9dHioan6Si2NHpDO37S5PnegfqfJv2c6xohRXYfNYgn5g\nWm5wUXerth2F+Ani03lwKSRT8VSfyGzF72A0tz2J397gJvnrY5PV6JAcL5qu\nSb7L\r\n=o/H/\r\n-----END PGP SIGNATURE-----\r\n"},"esm5":"esm5/bloomreach-experience-ng-sdk.js","main":"bundles/bloomreach-experience-ng-sdk.umd.js","_from":"file:bloomreach-experience-ng-sdk-0.3.2.tgz","fesm5":"fesm5/bloomreach-experience-ng-sdk.js","es2015":"fesm2015/bloomreach-experience-ng-sdk.js","module":"fesm5/bloomreach-experience-ng-sdk.js","esm2015":"esm2015/bloomreach-experience-ng-sdk.js","typings":"bloomreach-experience-ng-sdk.d.ts","_npmUser":{"name":"dokmic","email":"m@dokol.in"},"fesm2015":"fesm2015/bloomreach-experience-ng-sdk.js","metadata":"bloomreach-experience-ng-sdk.metadata.json","_resolved":"","_integrity":"","_npmVersion":"6.13.4","description":"SDK for powering content and components in Angular applications by [BloomReach Experience](https://www.bloomreach.com/en/products/experience).  This library makes integrating an Angular app with BloomReach Experience a breeze. It  supports both client-sid","directories":{},"sideEffects":false,"_nodeVersion":"12.16.1","dependencies":{"tslib":"^1.9.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^6.2.2","jsonpointer":"^4.0.1","@angular/core":"^6.0.0-rc.0 || ^6.0.0","@angular/http":"^6.0.0-rc.0 || ^6.0.0","path-to-regexp":"^2.2.1","@angular/common":"^6.0.0-rc.0 || ^6.0.0","@angular/router":"^6.0.0-rc.0 || ^6.0.0","@types/path-to-regexp":"^1.7.0"},"_npmOperationalInternal":{"tmp":"tmp/bloomreach-experience-ng-sdk_0.3.2_1596835459433_0.7676331944460622","host":"s3://npm-registry-packages"}}},"time":{"created":"2018-10-23T20:32:25.895Z","modified":"2026-09-04T10:07:45.980Z","0.1.0":"2018-10-23T20:32:26.047Z","0.1.1-rc":"2019-01-30T15:22:47.471Z","0.1.1-rc1":"2019-01-30T15:32:17.440Z","0.2.0":"2019-08-13T11:24:59.946Z","0.2.1":"2019-08-13T11:32:57.447Z","0.3.0":"2019-10-04T14:43:34.222Z","0.3.1":"2019-10-15T14:33:15.846Z","0.3.2":"2020-08-07T21:24:19.655Z"},"description":"SDK for powering content and components in Angular applications by [BloomReach Experience](https://www.bloomreach.com/en/products/experience).  This library makes integrating an Angular app with BloomReach Experience a breeze. It  supports both client-sid","maintainers":[{"email":"beetlerom@gmail.com","name":"beetlerom"},{"email":"joeri.degooijer@bloomreach.com","name":"joerideg"},{"email":"arthur.bogaart@bloomreach.com","name":"abogaart"},{"email":"rishabh.chhabda@bloomreach.com","name":"rishabh.chhabda"},{"email":"rameshkumar.arumugam@bloomreach.com","name":"rameshbr"},{"email":"peter.centgraf@bloomreach.com","name":"pcentgraf-bloomreach"},{"email":"georgevle93@gmail.com","name":"vlets"},{"email":"paul.edwards@bloomreach.com","name":"pauledwardsbloomreach"},{"email":"david@davidboyd.com","name":"davidboyd1"},{"email":"drq@nxfinc.com","name":"drq"},{"email":"nikola.trajkovski@bloomreach.com","name":"ntrajkovski"},{"email":"bcanvural@gmail.com","name":"bcanvural"},{"email":"charlie.chen@bloomreach.com","name":"lachire"},{"email":"giacomo.lamonaco@bloomreach.com","name":"glm-bloomreach"},{"email":"matteo.giusto@bloomreach.com","name":"mgiusto"},{"email":"bartosz.oudekerk@bloomreach.com","name":"boudekerk"},{"email":"aakash.anand@bloomreach.com","name":"aakash.anand"},{"email":"prateek.pandey@bloomreach.com","name":"prateek.pandey"},{"email":"jeroen.hoffman@bloomreach.com","name":"jeroenhoffman"},{"email":"vahid.mehrjouei@bloomreach.com","name":"vahid.mehrjouei"},{"email":"wenjun.li@bloomreach.com","name":"wenjun.li"},{"email":"shiva.dharavath@bloomreach.com","name":"shivanayak.dharavath2"}],"readme":"# Bloomreach Experience SDK for Angular ![angular](https://angular.io/assets/images/favicons/favicon.ico)\n\nSDK for powering content and components in Angular applications by [BloomReach Experience](https://www.bloomreach.com/en/products/experience). \nThis library makes integrating an Angular app with BloomReach Experience a breeze. It \nsupports both client-side- and server-side rendered/universal Angular apps. \n\nBloomReach Experience allows you to use an external front-end such as Angular for \nrendering while still providing a native-like authoring experience, such as integrated \npreview, in-context editing, drag & drop, server-side personalization. For more \ninformation on this approach, see [A new approach to integrating SPA's with WCM: Fixing \nwhat's wrong with headless integrations](https://www.bloomreach.com/en/blog/2018/03/a-new-approach-to-integrating-spas-with-wcm-fixing-what%E2%80%99s-wrong-with-headless-integrations.html).\n\n## Install\n\n```bash\nnpm install bloomreach-experience-ng-sdk jsonpointer path-to-regexp --save\n```\n\nPlease note that since it's not a best practice to include 3rd party libraries with an \nAngular library, the 3rd party libraries have to be installed manually as done with the \nabove command.\n\n## Usage\n\nAdd the SDK to the app's NgModule imports:\n```typescript\nimport { BloomreachExperienceNgSdkModule } from 'bloomreach-experience-ng-sdk';\n\n@NgModule({\n  imports: [\n    // ... other imports\n    BloomreachExperienceNgSdkModule\n    ],\n    ...\n```\n\nThen, add the following to an Angular component where you want BloomReach to (partly) \ndetermine what to render:\n- Import `ApiUrlsService`, `ComponentMappingsService`, `InitializeSdkService`, and `RequestContextService`;\n- Add these services to the constructor of the component;\n- Override default API Urls using `ApiUrlsService`;\n- Set component mappings through `ComponentMappingsService`;\n- Set current URL-path via `RequestContextService`;\n- Call `initialize()` method of `InitializeSdkService`;\n- And add `<bre-render-cms-component></bre-render-cms-component>` to the component template.\n\nSee the next paragraph for a description and explanation of each of the services and the \ncomponents. There's also an API section below that includes more details.\n\n```typescript\nimport { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ApiUrlsService, ComponentMappingsService, InitializeSdkService, RequestContextService } from 'bloomreach-experience-ng-sdk';\n\n@Component({\n  template: `<bre-render-cms-component></bre-render-cms-component>`,\n})\nexport class MyAppClass implements OnInit {\n  componentMappings = {\n    \"MyCustomComponent\": MyCustomComponent\n  };\n\n  apiUrls = {\n    live: {\n      // override live API URL here\n    },\n    preview: {\n      // override preview API URL here\n    }\n  }\n  \n  constructor(\n    private router: Router,\n    private apiUrlsService: ApiUrlsService,\n    private componentMappingsService: ComponentMappingsService,\n    private initializeSdkService: InitializeSdkService,\n    private requestContextService: RequestContextService\n  ) {}\n\n  ngOnInit() {\n    this.apiUrlsService.setApiUrls(this.apiUrls);\n    this.componentMappingsService.setComponentMappings(this.componentMappings);\n    this.requestContextService.parseUrlPath(this.router.url);\n    this.initializeSdkService.initialize();\n  }\n}\n```\n\nThe component mappings tell the Angular app what Angular components to use for rendering \ncomponents from the Page Model API response, by mapping these to the *hst:label* of a CMS \ncatalog component. These mappings are set through the `ComponentMappingsService`.\n\nThe `RequestContextService` is used to pass the current URL so that it can fetch the Page \nModel for the page that is active; and to detect whether preview is active so that \nmeta-data for CMS' Channel Manager functionality (e.g. in-context editing) is included in \nthe HTML, and consequently Channel Manager functionality is enabled.\n\n`InitializeSdkService` fetches the Page Model for the current URL that is set through \n`RequestContextService`. and it initializes the CMS' Channel Manager integration.\n\nFinally, `<bre-render-cms-component>` renders the components and any content referenced \nfrom the components in the Page Model API response. This tag/component should be placed in \nthe Angular app at the exact location where you want the CMS components to be outputted.\n\n## Demo\n\nA demo project is available at [Github](https://github.com/onehippo/hippo-demo-spa-integration).\nPlease note that in order to use the [Channel Manager Integration](https://www.onehippo.org/library/concepts/spa-plus/channel-manager-spa-api/introduction.html),\nyou need to have an Enterprise Maven account, which is only available toBloomReach's \nEnterprise customers.\n\nThe demo project can be used in combination with the Angular example app. To build and \nrun the example app, do the following:\n\n```bash\nnpm install\nnpm run start\n```\n\nThe demo project is configured for React by default, so you will have to update the CORS\nheaders from http://localhost:3000 to http://localhost:4200 in \n[/hst:hst/hst:hosts/dev-localhost/localhost/hst:root[@hst:responseheaders]](http://localhost:8080/cms/console/?1&path=/hst:hst/hst:hosts/dev-localhost/localhost/hst:root).\nAlso, make sure to change the Channel Settings in the Channel Manager, and select Angular\nfrom the front-end renderer dropdown menu.\n\n## Creating custom components\n\nCustom components that are rendered through `<bre-render-cms-component>` can be created \njust as any other regular Angular component, with the requirement that it should implement \nthe `BaseComponent` interface that is provided by the SDK.\n\nAdditionally, all components that are rendered through `<bre-render-cms-component>` should \nbe added to the `@NgModule()`'s `entryComponents` array, as the components are created \nusing the componentFactory. Otherwise you will get an error during component rendering.\n\n### Properties\n\nThe following properties are passed to the component, provided it's rendered by \n`<RenderCmsComponent>`:\n- `configuration` - `Object` component configuration. Contains the contributed models, raw \n parameters and resolved parameters. Content included in the component's model is not \n serialized as part of the component's configuration but in a separate content object, and \n a JSON Pointer reference is used to link to the actual content object. This is done to \n prevent content from being included multiple times in the API response when referenced \n multiple times on a page. \n\n### Example\n\n```typescript\nimport { Component, Input, OnInit } from '@angular/core';\nimport { BaseComponent, getNestedObject } from 'bloomreach-experience-ng-sdk';\n\n@Component({\n  selector: 'app-news-list',\n  templateUrl: `\n    <div class=\"row\" *ngIf=\"items; else configureComponentBlock\">\n      <div class=\"col-sm-12 news-list\">\n        <app-news-item *ngFor=\"let item of items\" [contentRef]=\"item\"></app-news-item>\n      </div>\n      <nav class=\"blog-pagination\">\n        <span class=\"btn btn-outline-primary disabled\">Older</span>\n        <span class=\"btn btn-outline-secondary disabled\">Newer</span>\n      </nav>\n    </div>\n    <ng-template #configureComponentBlock>Click to configure {{configuration.label}}</ng-template>`,\n  styleUrls: ['./news-list.component.css']\n})\nexport class NewsListComponent implements BaseComponent, OnInit {\n  @Input() configuration: any;\n  items: any;\n\n  constructor() { }\n\n  ngOnInit() {\n    this.createList();\n  }\n\n  createList() {\n    this.items = getNestedObject(this.configuration, ['models', 'pageable', 'items']);\n  }\n}\n```\n\n### Content components\n\nComponents that reference a single content-item (e.g. the Banner component) can use a \nsuperclass that provides a convenient method for retrieving the corresponding content-item \nbased on the reference found in the component's configuration.\n\nTo use the superclass, a content component has to extend `SingleContentComponent`, which \nis provided by the SDK. Just as a regular custom component, the component will need to \nimplement the `BaseComponent` interface.\n\nThe `SingleContentComponent` provides two methods: `getContent()` and \n`getImageUrl(imageRef)`. See more details below.\n\nFinally, content components can use the `<bre-cms-edit-button>` component for rendering \nthe [Manage Content \nButton](https://www.onehippo.org/library/concepts/component-development/render-manage-content-button.html) \nin preview mode in the CMS.\n\n#### Properties\n\n- `content` - `Object` raw content object that contains the content-item's fields and \n field-values. Any references to other content-items (e.g. images) are serialized as JSON \n Pointers.\n\n#### Methods\n\n- `getContent` - `Object` retrieves the component's referenced content-item using the \n JSONPointer that is found in the component's configuration. Stores the content-item \n object in the `content` property.\n- `getImageUrl(imageRef: string)` - `String` generates fully qualified URL to an image \n using the JSONPointer reference to the image.\n\n#### Example\n\n```typescript\nimport { Component, OnInit } from '@angular/core';\nimport { BaseComponent, ImageUrlService, PageModelService, SingleContentComponent } from 'bloomreach-experience-ng-sdk';\n\n@Component({\n  selector: 'app-banner',\n  templateUrl: `\n    <div class=\"jumbotron has-edit-button\" *ngIf=\"content; else configureComponentBlock\">\n      <bre-cms-edit-button *ngIf=\"content\" [configuration]=\"content\"></bre-cms-edit-button>\n      <h1>{{content.title}}</h1>\n      <figure>\n        <img src={{imageUrl}} alt={{content.title}}/>\n      </figure>\n      <p [innerHTML]=\"content.content.value\"></p>\n    </div>\n    <ng-template #configureComponentBlock>Click to configure {{configuration.label}}</ng-template>`,\n  styleUrls: ['./banner.component.css']\n})\nexport class BannerComponent extends SingleContentComponent implements BaseComponent, OnInit {\n  imageUrl: string;\n\n  constructor(imageUrlService: ImageUrlService, pageModelService: PageModelService) {\n    super(imageUrlService, pageModelService);\n  }\n\n  ngOnInit() {\n    super.ngOnInit();\n    this.getImage();\n  }\n\n  getImage() {\n    if (this.content && this.content.image) {\n      this.imageUrl = super.getImageUrl(this.content.image);\n    }\n  }\n}\n```\n\n### Static CMS components\n\nStatic CMS components are components that are defined by developers / administrators and \ncannot be modified by users in the CMS. However, any content or site menus these \ncomponents reference can be changed by users in the CMS.\n\nSince `<RenderCmsComponent>` only renders container components (drag-and-drop components) \nby default, you have to specify two additional properties in order to render a static CMS \ncomponent: \n- `path` property to point to the relative path of the component;\n- `renderComponent` property to specify which Angular component to use for rendering the \n component. See the example below.\n\n```typescript\nimport { Component } from '@angular/core';\nimport { MenuComponent } from '../cms-components/menu/menu.component';\n\n@Component({\n  selector: 'app-static-component-example',\n  templateUrl: `<bre-render-cms-component [path]=\"'menu'\" [renderComponent]=\"menuComponent\"></bre-render-cms-component>`,\n  styleUrls: ['./static-component-example.css']\n})\nexport class StaticComponentExample {\n  menuComponent = MenuComponent;\n}\n```\n\n### More component examples\n\nFor more detailed examples, see the components included in the [demo application](https://github.com/bloomreach/experience-ng-sdk/tree/master/demo/src/app/cms-components). \n\n## Building the SDK\n\nYou can build the SDK using the following command:\n\n```bash\nng build --prod bloomreach-experience-ng-sdk\n```\n\nTo test out builds locally, you can use the example application that you can build and run from the root:\n\n```bash\nnpm install\nnpm run start\n```\n\n## API\n\n### `ApiUrlsService`\n\nService for overriding the default API URLs, which are used for fetching the Page Model \nAPI. Uses both a live and preview URL for the API URL.\n\n#### Methods\n\n- `setApiUrls(newApiUrls: ApiUrls = {})` - `None` allows you to override the default URLs. \n Typically you will only have to define `scheme`, `hostname`, `port`, and `contextPath`. \n See `ApiUrls` type below for format of the `newApiUrls` parameter.\n\n#### `ApiUrls` type\n\n- `live`:\n  - `scheme`: `String` scheme (default: *http*)\n  - `hostname`: `String` hostname (default: *localhost*)\n  - `port`: `number` port number (default: *8080*)\n  - `contextPath`: `String` site context-path (default: *site*)\n  - `channelPath`: `String` path to the used channel, if channel is accessed through a \n   subpath\n  - `previewPrefix`: `String` preview-prefix used by CMS (default: *_cmsinternal*)\n  - `apiPath`: `String` path to Page Model API as subpath (default: *resourceapi*)\n  - `apiComponentRenderingUrlSuffix`: `String` (default: *_hn:type=component-rendering&_hn:ref=*)\n- `preview`: same as live (see above)\n\n### `ComponentMappingsService`\n\nThe component mapping maps CMS catalog components to Angular components, so that Angular \nknows what components to use for rendering the components in the Page Model API response.\n\n#### Methods\n\n- `setComponentMappings(componentMappings: ComponentMappings)` - `None` sets the component \n mappings. Expects as input an object with the `hst:label` of the CMS components as keys \n and as value the Angular component used for rendering the component.\n\n#### Example\n\n```typescript\nimport { Component, OnInit } from '@angular/core';\nimport { ComponentMappingsService } from 'bloomreach-experience-ng-sdk';\n\nexport class ComponentMappingExampleComponent implements OnInit {\n  constructor(private componentMappingsService: ComponentMappingsService) {}\n\n  ngOnInit() {\n    const componentMappings = {\n      'Banner': BannerComponent\n    }\n    this.componentMappingsService.setComponentMappings(this.componentMappings);\n  }\n}\n```\n\n### `ImageUrlService`\n\nGenerates URLs to images for any images that are served directly from BloomReach \nExperience.\n\n#### Methods\n\n- `getImageUrl(imageRef)` - `String` returns URL of image using `imageRef`, the JSON \n Pointer that references the image.\n- `getImageUrlByPath(imagePath: string, variant: string)` - `String` returns URL of image \n using its relative-path and the name of the image-variant.\n\n### `InitializeSdkService`\n\nService that handles initialization of the SDK, including:\n- Fetching initial Page Model via `PageModelService`, and updates to the Page Model on \n navigation changes or component updates in the CMS.\n- Initializating the Channel Manager integration.\n- Restoring the Page Model state using [Transfer State API](https://angular.io/api/platform-browser/TransferState). To use it import [ServerTransferStateModule](https://angular.io/api/platform-server/ServerTransferStateModule) on the server and [BrowserTransferStateModule](https://angular.io/api/platform-browser/BrowserTransferStateModule) on the client.\n\n#### Methods\n\n- `initialize({initializePageModel = true, initializeRouterEvents = true}): Subscription | void` - initializes the SDK by fetching the Page Model and initializing the Channel manager integration. Returns router events subscription or void if `initializeRouterEvents` is `false`.\n  - `initializePageModel: boolean` - flag to fetch the Page Model on initialization;\n  - `initializeRouterEvents: boolean` - flag to subscribe for router events.\n\n### `PageModelService`\n\nFetches the Page Model API and manages state.\n\n#### Methods\n\n- `getPageModel()` - `Object` return the Page Model. Please note that this is a \n synchronous call, so if this is called during initialization, the Page Model might not\n have been set yet. Use `getPageModelSubject()` in these cases.\n- `setPageModel(value: any)` - update the Page Model and push the value to the Page Model subject (see `getPageModelSubject()`).\n- `getPageModelSubject()` `Subject<Object>` return a subject of the Page Model that can be \n subscribed to for asynchronous access to the Page Model.\n- `getContentViaReference(contentRef: string)` - `Object` returns content item from Page \n Model using the `contentRef` JSON Pointer.\n\n### `RequestContextService`\n\nThe `RequestContextService` is used to get the current URL for fetching the Page Model for \nthe current page; and to detect whether  preview mode is active so that meta-data for \nChannel Manager functionality (e.g. in-context editing) is included in the HTML, and \nconsequently Channel Manager functionality is enabled.\n\n#### Methods\n\n- `parseUrlPath(urlPath: string): void` - parses the current URL-path for detecting the\n current URL and preview detection.\n- `parseRequest(request: Request): void` - parses the current request for detecting the\n current URL and preview detection. See `Request` type below for format of the `request`\n parameter.\n- `isPreviewRequest(): boolean` - returns if preview mode is active/detected.\n- `getDebugging(): boolean` - returns if debugging mode is enabled or not\n- `setDebugging(debugging: boolean): void` - sets debugging mode which enables detailed\n logging on request parsing, Channel Manager integration, and component updates.\n\n#### `Request` type\n\n- `hostname: string` - should contain the hostname for the current request:\n  - `window.location.hostname` for client-side rendering (Browser Platform);\n  - `self.location.hostname` for Web Workers (Worker Platform);\n  - `request.hostname` for server-side rendering (Server Platform/Angular Universal).\n    For server-side rendering, the SDK expects the request to be injected as `REQUEST` token:\n    ```javascript\n    import { REQUEST } from 'bloomreach-experience-ng-sdk';\n\n    // ...\n    providers: [\n      { provide: REQUEST, useValue: request },\n    ],\n    // ...\n    ```\n\n- `path: string` - should contain the URL-path for the current request (client-side this is window.location.pathname).\n\n### `<bre-render-cms-component>`\n\nRenders a CMS component and all of its children using the Page Model supplied by \n`PageModelService`. Will render the entire Page Model by default.\n\n#### Properties\n\n- `path` - `String` path to a component (static CMS component), container or \n container-item in the Page Model to render only that component and its children. If no \n path is supplied, entire Page Model will be rendered. \n- `renderComponent` - `Angular.Component` render a static CMS component using specified \n Angular component. Only works in combination with `path` property, which should specify \n path to the static CMS component. Site menus that are rendered this way can leverage the \n `<bre-cms-edit-button>` component for rendering edit buttons in the CMS.\n\n#### Example\n\n```typescript\nimport { Component } from '@angular/core';\nimport { MenuComponent } from '../cms-components/menu/menu.component';\n\n@Component({\n  selector: 'app-static-component-example',\n  templateUrl: `<bre-render-cms-component [path]=\"'menu'\" [renderComponent]=\"menuComponent\"></bre-render-cms-component>`,\n  styleUrls: ['./static-component-example.css']\n})\nexport class StaticComponentExample {\n  menuComponent = MenuComponent;\n}\n```\n\n### `<bre-cms-edit-button>`\n\nInserts meta-data for either a content-item or site menu for placing an edit button in \npreview mode in the CMS.\n\n#### Properties\n\n- `configuration` - `Object` configuration of the content-item or site-menu (not the \n component configuration containing the content-item/site-menu), which has the `_meta` \n object in its root.\n\n#### Example\n\n```html\n<bre-cms-edit-button *ngIf=\"menuConfiguration\" [configuration]=\"menuConfiguration\"></bre-cms-edit-button>\n```\n\n### `getNestedObject(nestedObject, pathArray)`\n\nReturns a nested object or value using a path array. Useful when you need to access deeply \nnested objects/values without having to string null checks together.\n\n#### Arguments\n\n- `nestedObject` - `Object` the object containing the nested object or value.\n- `pathArray` - `Array` contains the path to the nested object as an array.\n\n#### Return types\n\n`Object|null` returns the nested object if found, otherwise returns null. \n\n## FAQ / Troubleshooting\n\nNothing here yet :)\n\n## License\n\nApache 2.0\n","readmeFilename":"README.md"}