{"_id":"@adwhale/web-sdk-angularjs","name":"@adwhale/web-sdk-angularjs","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@adwhale/web-sdk-angularjs","version":"0.0.1","type":"module","description":"ADwhale Web SDK AngularJS 1.x wrapper","license":"MIT","publishConfig":{"access":"public"},"keywords":["adwhale","ad","mediation","sdk","angularjs","banner","interstitial","native"],"main":"dist/cjs/index.cjs","module":"dist/esm/index.js","types":"dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.cjs"}},"scripts":{"build":"rollup -c rollup.config.js","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"peerDependencies":{"@adwhale/web-sdk":">=0.0.1","angular":"^1.8.0"},"devDependencies":{"@adwhale/web-sdk":"workspace:*","@types/angular":"^1.8.0"},"sideEffects":false,"_id":"@adwhale/web-sdk-angularjs@0.0.1","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-CmCJNYZ6vBlh3Q8JrMyVqH1xdQy9dNvyOCPcpLgcbDs68ViAKbSRs2SHLtCGM8b5YXWPCA10F/EE3PglnNXFlQ==","shasum":"b62b16f0423d64cad78714650b0e335bae2f0a8c","tarball":"https://registry.npmjs.org/@adwhale/web-sdk-angularjs/-/web-sdk-angularjs-0.0.1.tgz","fileCount":8,"unpackedSize":33941,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDWCKaKQGkyeOKHRLtoBqsrmjUSKLeYRoYDfIUnUA2DAQIhAOiXCtKOfp//p6gWOhHxSdmlpkica3SjmnPmsQnuqOU2"}]},"_npmUser":{"name":"fsn_lab","email":"develop@fsn.co.kr"},"directories":{},"maintainers":[{"name":"fsn_lab","email":"develop@fsn.co.kr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/web-sdk-angularjs_0.0.1_1773991221899_0.12237568564351453"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-20T07:20:21.840Z","0.0.1":"2026-03-20T07:20:22.058Z","modified":"2026-03-20T07:20:22.238Z"},"maintainers":[{"name":"fsn_lab","email":"develop@fsn.co.kr"}],"description":"ADwhale Web SDK AngularJS 1.x wrapper","keywords":["adwhale","ad","mediation","sdk","angularjs","banner","interstitial","native"],"license":"MIT","readme":"# @adwhale/web-sdk-angularjs\n\nADwhale Web SDK의 AngularJS 1.x 래퍼 라이브러리.\n\n## 설치\n\n```bash\nnpm install @adwhale/web-sdk @adwhale/web-sdk-angularjs\n```\n\n## 빠른 시작\n\n### 1. 모듈 등록 및 초기화\n\n```javascript\n// 모듈 의존성 추가\nangular.module('myApp', ['adwhale.sdk']);\n\n// config 단계에서 SDK 초기화\nangular.module('myApp').config(['adWhaleProvider', function(adWhaleProvider) {\n  adWhaleProvider.init({\n    publisherUid: 'PUB-XXXX',\n    debug: true,\n  });\n}]);\n```\n\n### 2. 배너 광고\n\n```html\n<adwhale-banner\n  placement-uid=\"PLACE-XXXX\"\n  ad-size=\"320x50\"\n  auto-refresh=\"true\"\n  loading=\"lazy\"\n  passback-tag=\"<div>fallback</div>\"\n  on-ad-loaded=\"ctrl.onAdLoaded(info)\"\n  on-ad-load-failed=\"ctrl.onAdLoadFailed(error)\"\n  on-ad-impression=\"ctrl.onAdImpression(info)\"\n  on-ad-clicked=\"ctrl.onAdClicked()\"\n  on-ad-refreshed=\"ctrl.onAdRefreshed(info)\"\n  on-passback=\"ctrl.onPassback()\">\n</adwhale-banner>\n```\n\n```javascript\nangular.module('myApp').controller('BannerCtrl', function() {\n  this.onAdLoaded = function(info) { console.log('loaded', info); };\n  this.onAdLoadFailed = function(error) { console.log('failed', error); };\n  this.onAdImpression = function(info) { console.log('impression', info); };\n  this.onAdClicked = function() { console.log('clicked'); };\n  this.onAdRefreshed = function(info) { console.log('refreshed', info); };\n  this.onPassback = function() { console.log('passback'); };\n});\n```\n\n### 3. 전면 광고 (Interstitial)\n\n`adWhaleInterstitial` 서비스를 주입하여 사용합니다.\n\n```javascript\nangular.module('myApp').controller('GameCtrl',\n  ['$scope', 'adWhaleInterstitial', function($scope, adWhaleInterstitial) {\n    var interstitial = adWhaleInterstitial.create({\n      placementUid: 'PLACE-YYYY',\n      onAdLoaded: function(info) {\n        $scope.isLoaded = true;\n        console.log('loaded', info);\n      },\n      onAdShowed: function() { console.log('showed'); },\n      onAdImpression: function(info) { console.log('impression', info); },\n      onAdClosed: function() { console.log('closed'); },\n      onAdClicked: function() { console.log('clicked'); },\n    });\n\n    interstitial.load();\n\n    $scope.showAd = function() {\n      interstitial.show();\n    };\n\n    $scope.$on('$destroy', function() {\n      interstitial.destroy();\n    });\n  }]\n);\n```\n\n```html\n<button ng-click=\"showAd()\" ng-disabled=\"!isLoaded\">다음 스테이지</button>\n```\n\n### 4. 네이티브 광고\n\n트랜스클루전을 사용하여 커스텀 레이아웃을 구성합니다. 광고 로드 후 `scope.ad`에 네이티브 광고 데이터가 설정됩니다.\n\n```html\n<adwhale-native\n  placement-uid=\"PLACE-ZZZZ\"\n  loading=\"lazy\"\n  on-ad-loaded=\"ctrl.onAdLoaded(info)\"\n  on-ad-impression=\"ctrl.onAdImpression(info)\"\n  on-passback=\"ctrl.onPassback()\">\n  <div ng-if=\"ad\" class=\"my-native-ad\">\n    <img ng-src=\"{{ ad.imageIcon }}\" alt=\"\" />\n    <h3>{{ ad.title }}</h3>\n    <p>{{ ad.desc }}</p>\n    <img ng-src=\"{{ ad.imageMain }}\" alt=\"\" />\n    <span>{{ ad.sponsored }}</span>\n    <a ng-href=\"{{ ad.linkUrl }}\"><button>{{ ad.ctaText }}</button></a>\n  </div>\n</adwhale-native>\n```\n\n## API\n\n### `adWhaleProvider`\n\nConfig 단계에서 SDK를 초기화합니다.\n\n```javascript\nadWhaleProvider.init(config);\n```\n\n| 매개변수 | 타입 | 설명 |\n|----------|------|------|\n| `config` | `Object` | SDK 초기화 설정 (`publisherUid` 필수) |\n\n### `<adwhale-banner>`\n\n| 속성 | 타입 | 필수 | 설명 |\n|------|------|------|------|\n| `placement-uid` | `string` | O | 지면 UID |\n| `ad-size` | `string` | | 광고 사이즈 (`320x50`, `320x100`, `300x250`, `250x250`, `adaptive`) |\n| `auto-refresh` | `string` | | `\"true\"` 시 자동 갱신 |\n| `loading` | `string` | | `\"lazy\"` 또는 `\"eager\"` |\n| `passback-tag` | `string` | | Passback HTML |\n| `on-ad-loaded` | `expression` | | 광고 로드 성공 (`info` 매개변수) |\n| `on-ad-load-failed` | `expression` | | 광고 로드 실패 (`error` 매개변수) |\n| `on-ad-impression` | `expression` | | 노출 기록 (`info` 매개변수) |\n| `on-ad-clicked` | `expression` | | 클릭 |\n| `on-ad-refreshed` | `expression` | | 자동 갱신 완료 (`info` 매개변수) |\n| `on-passback` | `expression` | | Passback 실행 |\n\n### `adWhaleInterstitial`\n\nFactory 서비스. `create(options)`로 인스턴스를 생성합니다.\n\n#### `create(options)`\n\n| 옵션 | 타입 | 필수 | 설명 |\n|------|------|------|------|\n| `placementUid` | `string` | O | 지면 UID |\n| `passbackTag` | `string` | | Passback HTML |\n| `onAdLoaded` | `function(info)` | | 로드 완료 |\n| `onAdLoadFailed` | `function(error)` | | 로드 실패 |\n| `onAdShowed` | `function()` | | 표시됨 |\n| `onAdImpression` | `function(info)` | | 노출 |\n| `onAdClosed` | `function()` | | 닫힘 |\n| `onAdClicked` | `function()` | | 클릭 |\n| `onPassback` | `function()` | | Passback |\n\n**반환값:**\n\n| 속성/메서드 | 타입 | 설명 |\n|-------------|------|------|\n| `isLoaded` | `boolean` | 로드 완료 여부 (getter) |\n| `isShowing` | `boolean` | 표시 중 여부 (getter) |\n| `load()` | `function` | 광고 로드 |\n| `show()` | `function` | 광고 표시 |\n| `destroy()` | `function` | 리소스 정리 |\n\n### `<adwhale-native>`\n\n| 속성 | 타입 | 필수 | 설명 |\n|------|------|------|------|\n| `placement-uid` | `string` | O | 지면 UID |\n| `loading` | `string` | | `\"lazy\"` 또는 `\"eager\"` |\n| `passback-tag` | `string` | | Passback HTML |\n| `on-ad-loaded` | `expression` | | 로드 완료 (`info` 매개변수) |\n| `on-ad-load-failed` | `expression` | | 로드 실패 (`error` 매개변수) |\n| `on-ad-impression` | `expression` | | 노출 (`info` 매개변수) |\n| `on-ad-clicked` | `expression` | | 클릭 |\n| `on-passback` | `expression` | | Passback |\n\n광고 로드 후 트랜스클루전 scope에 `ad` 변수로 네이티브 광고 데이터가 노출됩니다.\n\n## 주의사항\n\n- `$scope.$on('$destroy')`에서 interstitial의 `destroy()`를 반드시 호출하세요\n- 콜백은 `&` 바인딩(expression binding)이므로, 매개변수는 객체로 전달합니다: `on-ad-loaded=\"ctrl.onAdLoaded(info)\"`\n- Banner/Native 디렉티브는 `$destroy` 시 자동으로 리소스를 정리합니다\n\n## 요구사항\n\n- AngularJS 1.8 이상\n- `@adwhale/web-sdk` 필수\n","readmeFilename":"README.md","_rev":"1-33fb5069948e339411656d4ec8136f12"}