{"id":21638061,"url":"https://github.com/purecloudlabs/crossframe-pendo","last_synced_at":"2025-12-12T03:36:47.578Z","repository":{"id":58219703,"uuid":"67158171","full_name":"purecloudlabs/crossframe-pendo","owner":"purecloudlabs","description":"Allows Pendo guides to work cross-frame","archived":false,"fork":false,"pushed_at":"2024-02-13T23:04:41.000Z","size":81,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-10T13:31:02.172Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/purecloudlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-01T18:57:36.000Z","updated_at":"2023-09-08T17:14:20.000Z","dependencies_parsed_at":"2023-02-09T13:00:21.325Z","dependency_job_id":null,"html_url":"https://github.com/purecloudlabs/crossframe-pendo","commit_stats":null,"previous_names":["mypurecloud/crossframe-pendo"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purecloudlabs%2Fcrossframe-pendo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purecloudlabs%2Fcrossframe-pendo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purecloudlabs%2Fcrossframe-pendo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/purecloudlabs%2Fcrossframe-pendo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/purecloudlabs","download_url":"https://codeload.github.com/purecloudlabs/crossframe-pendo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248442301,"owners_count":21104153,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-25T04:08:03.873Z","updated_at":"2025-12-12T03:36:42.528Z","avatar_url":"https://github.com/purecloudlabs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# crossframe-pendo\n\n### NOTICE: This code is now obsolete. The latest Pendo agent natively supports guides with steps targeting elements across multiple iframes. This library should no longer be used, and should be removed from any installations using the latest Pendo agent as it now causes conflicts.\n\nThis library works alongside the standard [Pendo](http://pendo.io) client library to add support for walkthroughs that need to display guides in multiple iframes.\n\nThe minified build is just 13KB, and requires very little configuration, so it should be easy to get it added to your project!\n\n# Installation\n\nThe simplest way to get crossframe-pendo is with [Bower](http://bower.io). Just run `bower install crossframe-pendo` to add it to your project. Be sure to include the script on all pages of your application, across all iframes. Any configuration of iframes should be supported (parent-child, deeply nested, siblings with shared parent, etc.), so long as crossframe-pendo is initialized in every window.\n\n# Configuration\n\n## Initialization\n\nThe crossframe-pendo module will be accessible via `window.crossframePendo`. Use the `initialize()` method to have it bootstrap itself. Do this in each iframe, and you'll be ready to go!\n\nThe `initialize()` method returns a promise, which will resolve once the Pendo client library loads and crossframe-pendo has completed setup.\n\n## Options\n\nYou may optionally supply a configuration object when initializing crossframe-pendo, with one or more of the following options:\n\n### errorCallback\n\nThis function will be executed when crossframe-pendo is unable to launch or advance a guide in any available iframe. An error object will be passed in as the first argument.\n\nExample:\n\n```javascript\nwindow.crossframePendo.initialize({\n  errorCallback: function (error) {\n  \t// handle error\n  }\n});\n```\n\nThe error object will have an `errorType` property of either `\"GUIDE.LAUNCH\"` or `\"STEP.ADVANCE\"`, as well as `guideId` and `stepId` properties, as appropriate for the error type.\n\n### stepAdvanceCallback\n\nThis function will be executed after the user advances each step in any walkthrough. The Pendo step object corresponding to the just-advanced guide will be passed in as the first argument.\n\nExample:\n\n```javascript\nwindow.crossframePendo.initialize({\n  stepAdvanceCallback: function (step) {\n    var guide = step.getGuide();\n    // the world's your oyster...\n  }\n});\n```\n\n### timeout\n\nThe amount of time, in milliseconds, that crossframe-pendo should wait before assuming that attempts to advance a guide in another window has failed, at which point the `errorCallback` will be executed. Defaults to 10000 (10 seconds) unless overridden in your configuration.\n\nExample:\n\n```javascript\nwindow.crossframePendo.initialize({\n  timeout: 5000\n});\n```\n\n## Asynchronous Guide Lookup\n\nIncluded in crossframe-pendo are some useful helper functions which allow for looking up Pendo guides asynchronously. Each of these functions return a promise, greatly simplifying the process of programmatically acccessing Pendo guides when the load state of the client library cannot be guaranteed.\n\n### findGuideById\n\n```javascript\nwindow.crossframePendo.findGuideById(\"24601\").then(function (guide) {\n  // here's your guide\n});\n```\n\n### findGuideByName\n\n```javascript\nwindow.crossframePendo.findGuideByName(\"Jean Valjean\").then(function (guide) {\n  // here's your guide\n});\n```\n\n### getGuides\n\n```javascript\nwindow.crossframePendo.getGuides().then(function (guides) {\n  // here's an array of all available guides\n});\n```\n\n### reloadGuides\n\n```javascript\nwindow.crossframePendo.reloadGuides()\n.then(function () {\n  return window.crossframePendo.findGuideById(\"1234\");\n})\n.then(function (guide) {\n  // here's your guide (freshness guaranteed!)\n});\n```\n\n## Contributing\n\nPull requests are welcome! Just clone the repo and use `npm install` to get all the devDependencies. All the source files are in `/src`. Running `grunt` will build everything to `/dist`, and will continue to monitor for changes to automatically update the build as you work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurecloudlabs%2Fcrossframe-pendo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpurecloudlabs%2Fcrossframe-pendo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpurecloudlabs%2Fcrossframe-pendo/lists"}