{"version":3,"file":"ngx-yubinbango.mjs","sources":["../../../../packages/ngx-yubinbango/src/lib/yubinbango-data/constants.ts","../../../../packages/ngx-yubinbango/src/lib/yubinbango-data/yubinbango-jsonp-client-backend.service.ts","../../../../packages/ngx-yubinbango/src/lib/utils/normalize-postal-code.ts","../../../../packages/ngx-yubinbango/src/lib/utils/validate-postal-code.ts","../../../../packages/ngx-yubinbango/src/lib/yubinbango-data/yubinbango-data-postal-code-resolver.service.ts","../../../../packages/ngx-yubinbango/src/lib/core/postal-code-resolver.service.ts","../../../../packages/ngx-yubinbango/src/lib/directives/provider.directive.ts","../../../../packages/ngx-yubinbango/src/lib/utils/element-has-value.ts","../../../../packages/ngx-yubinbango/src/lib/directives/postal-code.directive.ts","../../../../packages/ngx-yubinbango/src/lib/utils/coerce-boolean-property.ts","../../../../packages/ngx-yubinbango/src/lib/directives/completion.directive.ts","../../../../packages/ngx-yubinbango/src/lib/ngx-yubinbango.module.ts","../../../../packages/ngx-yubinbango/src/ngx-yubinbango.ts"],"sourcesContent":["export const REGION = [\n  null,\n  '北海道',\n  '青森県',\n  '岩手県',\n  '宮城県',\n  '秋田県',\n  '山形県',\n  '福島県',\n  '茨城県',\n  '栃木県',\n  '群馬県',\n  '埼玉県',\n  '千葉県',\n  '東京都',\n  '神奈川県',\n  '新潟県',\n  '富山県',\n  '石川県',\n  '福井県',\n  '山梨県',\n  '長野県',\n  '岐阜県',\n  '静岡県',\n  '愛知県',\n  '三重県',\n  '滋賀県',\n  '京都府',\n  '大阪府',\n  '兵庫県',\n  '奈良県',\n  '和歌山県',\n  '鳥取県',\n  '島根県',\n  '岡山県',\n  '広島県',\n  '山口県',\n  '徳島県',\n  '香川県',\n  '愛媛県',\n  '高知県',\n  '福岡県',\n  '佐賀県',\n  '長崎県',\n  '熊本県',\n  '大分県',\n  '宮崎県',\n  '鹿児島県',\n  '沖縄県',\n];\n\nexport const YUBINBANGO_DATA_URL =\n  'https://yubinbango.github.io/yubinbango-data/data';\n","import {\n  HttpEvent,\n  HttpRequest,\n  JsonpClientBackend,\n} from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { YUBINBANGO_DATA_URL } from './constants';\n\n@Injectable()\nexport class YubinbangoJsonpClientBackend extends JsonpClientBackend {\n  private url?: string;\n\n  override handle(req: HttpRequest<never>): Observable<HttpEvent<unknown>> {\n    this.url = req.url;\n\n    const result = super.handle(req);\n\n    return result;\n  }\n}\n\n// 無理やりプライベートメソッドをオーバーライドする\nconst originalNextCallback = (\n  YubinbangoJsonpClientBackend.prototype as unknown as {\n    nextCallback(): string;\n  }\n).nextCallback;\n\n(\n  YubinbangoJsonpClientBackend.prototype as unknown as {\n    url?: string;\n    nextCallback(): string;\n  }\n).nextCallback = function () {\n  return (this.url ?? '').startsWith(YUBINBANGO_DATA_URL)\n    ? '$yubin'\n    : originalNextCallback.call(this);\n};\n","/**\n * 郵便番号をノーマライズします。\n *\n * 全角→半角、ハイフン除去、全角（マイナス、長音）除去\n * @param postalCode 郵便番号\n * @returns\n */\nexport function normalizePostalCode(postalCode: string): string {\n  // 全角→半角、ハイフン除去、全角（マイナス、長音）除去\n  return postalCode\n    .replace(/[０-９]/g, (s) => String.fromCharCode(s.charCodeAt(0) - 65248))\n    .replace(/[-ー－]/g, '');\n}\n","export function validatePostalCode(postalCode: string): boolean {\n  return /^\\d{7}$/.test(postalCode);\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {\n  BehaviorSubject,\n  catchError,\n  filter,\n  finalize,\n  map,\n  Observable,\n  of,\n  shareReplay,\n  switchMap,\n  take,\n} from 'rxjs';\nimport { Address } from '../core/address';\nimport { PostalCodeResolver } from '../core/postal-code-resolver.service';\nimport { normalizePostalCode } from '../utils/normalize-postal-code';\nimport { YubinbangoData, YubinbangoDataResponse } from './yubinbango-data';\nimport { REGION, YUBINBANGO_DATA_URL } from './constants';\nimport { validatePostalCode } from '../utils/validate-postal-code';\n\nlet nextRequestId = 0;\nconst currentRequestId = new BehaviorSubject(nextRequestId);\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class YubinbangoDataPostalCodeResolver implements PostalCodeResolver {\n  /**\n   * 郵便番号の上3桁がキー、YubinbangoDataのレスポンスが値\n   */\n  private readonly cache = new Map<\n    string,\n    Observable<YubinbangoDataResponse>\n  >();\n\n  constructor(private readonly http: HttpClient) {}\n\n  resolve(postalCode: string): Observable<Address | null> {\n    postalCode = normalizePostalCode(postalCode);\n\n    if (!validatePostalCode(postalCode)) {\n      return of(null);\n    }\n\n    // 上3桁で検索を行う\n    const topPostalCode = postalCode.substring(0, 3);\n\n    // キャッシュがあれば利用\n    let addressResponseObservable = this.cache.get(topPostalCode);\n\n    if (!addressResponseObservable) {\n      const requestId = nextRequestId++;\n\n      addressResponseObservable = currentRequestId.pipe(\n        filter((id) => id === requestId),\n        switchMap(() =>\n          this.http\n            .jsonp<YubinbangoDataResponse>(\n              `${YUBINBANGO_DATA_URL}/${topPostalCode}.js`,\n              'c'\n            )\n            .pipe(\n              // エラーになった場合は null としてキャッシュする\n              catchError(() => of({})),\n              finalize(() => {\n                currentRequestId.next(requestId + 1);\n              })\n            )\n        ),\n        shareReplay(1)\n      );\n\n      this.cache.set(topPostalCode, addressResponseObservable);\n    }\n\n    return addressResponseObservable.pipe(\n      map((response) =>\n        response[postalCode] ? this.mapAddress(response[postalCode]) : null\n      ),\n      take(1)\n    );\n  }\n\n  private mapAddress([\n    regionId,\n    locality,\n    street,\n    extended = '',\n  ]: YubinbangoData): Address {\n    return {\n      regionId,\n      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n      region: REGION[regionId]!,\n      locality,\n      street,\n      extended,\n    };\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { YubinbangoDataPostalCodeResolver } from '../yubinbango-data/yubinbango-data-postal-code-resolver.service';\nimport { Address } from './address';\n\n@Injectable({\n  providedIn: 'root',\n  useExisting: YubinbangoDataPostalCodeResolver,\n})\nexport abstract class PostalCodeResolver {\n  abstract resolve(postalCode: string): Observable<Address | null>;\n}\n","import {\n  AfterContentInit,\n  ContentChildren,\n  Directive,\n  forwardRef,\n  Input,\n  OnDestroy,\n  Output,\n  QueryList,\n} from '@angular/core';\nimport {\n  distinctUntilChanged,\n  filter,\n  merge,\n  Observable,\n  startWith,\n  Subject,\n  switchMap,\n  takeUntil,\n} from 'rxjs';\nimport { Address } from '../core/address';\nimport { PostalCodeResolver } from '../core/postal-code-resolver.service';\n\nexport type AddressAutocompleteMode = 'change' | 'keyup' | 'manual';\n\nexport abstract class PostalCodeFormControl {\n  abstract get value(): string;\n  abstract get onKeyup(): Observable<void>;\n  abstract get onChange(): Observable<void>;\n}\n\nexport abstract class AddressProvider {\n  abstract get addressChange(): Observable<Address>;\n}\n\n@Directive({\n  selector: '[ybProvider]',\n  exportAs: 'ybProvider',\n  providers: [\n    {\n      provide: AddressProvider,\n      useExisting: forwardRef(() => ProviderDirective),\n    },\n  ],\n})\nexport class ProviderDirective\n  implements ProviderDirective, AfterContentInit, OnDestroy\n{\n  @Input()\n  ybAutocompleteMode: AddressAutocompleteMode = 'keyup';\n\n  @ContentChildren(PostalCodeFormControl, { descendants: true })\n  postalCodes?: QueryList<PostalCodeFormControl>;\n\n  private readonly address = new Subject<Address>();\n\n  @Output()\n  readonly addressChange = this.address.pipe(\n    distinctUntilChanged((prev, current) => {\n      return (\n        prev.regionId === current.regionId &&\n        prev.region === current.region &&\n        prev.locality === current.locality &&\n        prev.street === current.street &&\n        prev.extended === current.extended\n      );\n    })\n  );\n\n  private readonly destroy = new Subject<void>();\n\n  constructor(private readonly postalCodeResolver: PostalCodeResolver) {}\n\n  ngAfterContentInit(): void {\n    this.listenToPostalCode();\n  }\n\n  ngOnDestroy(): void {\n    this.address.complete();\n    this.destroy.next();\n    this.destroy.complete();\n  }\n\n  complete(): void {\n    const postalCode = this.postalCodes?.map((p) => p.value).join('') ?? '';\n\n    this.postalCodeResolver\n      .resolve(postalCode)\n      .pipe(takeUntil(this.destroy))\n      .subscribe((address) => {\n        if (address == null) {\n          return;\n        }\n\n        this.address.next(address);\n      });\n  }\n\n  private listenToPostalCode(): void {\n    const postalCodes = this.postalCodes;\n\n    if (postalCodes == null) {\n      return;\n    }\n\n    postalCodes.changes\n      .pipe(\n        startWith(null),\n        switchMap(() =>\n          merge(\n            merge(...postalCodes.map((p) => p.onChange)).pipe(\n              filter(() => this.ybAutocompleteMode === 'change')\n            ),\n            merge(...postalCodes.map((p) => p.onKeyup)).pipe(\n              filter(() => this.ybAutocompleteMode === 'keyup')\n            )\n          )\n        ),\n        takeUntil(this.destroy)\n      )\n      .subscribe(() => {\n        this.complete();\n      });\n  }\n}\n","export function elementHasValue<T extends HTMLElement & { value?: unknown }>(\n  element: T\n): element is T & { value: string | null } {\n  return 'value' in element;\n}\n","import {\n  Directive,\n  ElementRef,\n  forwardRef,\n  HostListener,\n  Optional,\n  Self,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { elementHasValue } from '../utils/element-has-value';\nimport { PostalCodeFormControl } from './provider.directive';\n\n@Directive({\n  selector: '[ybPostalCode]',\n  providers: [\n    {\n      provide: PostalCodeFormControl,\n      useExisting: forwardRef(() => PostalCodeDirective),\n    },\n  ],\n})\nexport class PostalCodeDirective extends PostalCodeFormControl {\n  get value(): string {\n    return (\n      this.ngControl?.value ??\n      (elementHasValue(this.elementRef.nativeElement) &&\n        this.elementRef.nativeElement.value) ??\n      ''\n    );\n  }\n\n  readonly onKeyup = new Subject<void>();\n\n  readonly onChange = new Subject<void>();\n\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    @Self() @Optional() private ngControl?: NgControl\n  ) {\n    super();\n  }\n\n  @HostListener('keyup')\n  handleKeyup(): void {\n    this.onKeyup.next();\n  }\n\n  @HostListener('change')\n  handleChange(): void {\n    this.onChange.next();\n  }\n}\n","export type BooleanPropertyType = boolean | string | null | undefined;\n\nexport function coerceBooleanProperty(value: unknown): boolean {\n  return value != null && `${value}` !== 'false';\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Renderer2,\n  Self,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject, takeUntil } from 'rxjs';\nimport {\n  BooleanPropertyType,\n  coerceBooleanProperty,\n} from '../utils/coerce-boolean-property';\nimport { elementHasValue } from '../utils/element-has-value';\nimport { AddressProvider } from './provider.directive';\n\n@Directive({\n  selector: '[ybCompletion]',\n})\nexport class CompletionDirective implements OnInit, OnDestroy {\n  @Input()\n  get ybRegion() {\n    return this._ybRegion;\n  }\n  set ybRegion(value: BooleanPropertyType) {\n    this._ybRegion = coerceBooleanProperty(value);\n  }\n  private _ybRegion = false;\n\n  @Input()\n  get ybLocality() {\n    return this._ybLocality;\n  }\n  set ybLocality(value: BooleanPropertyType) {\n    this._ybLocality = coerceBooleanProperty(value);\n  }\n  private _ybLocality = false;\n\n  @Input()\n  get ybStreet() {\n    return this._ybStreet;\n  }\n  set ybStreet(value: BooleanPropertyType) {\n    this._ybStreet = coerceBooleanProperty(value);\n  }\n  private _ybStreet = false;\n\n  @Input()\n  get ybExtended() {\n    return this._ybExtended;\n  }\n  set ybExtended(value: BooleanPropertyType) {\n    this._ybExtended = coerceBooleanProperty(value);\n  }\n  private _ybExtended = false;\n\n  private get value(): string {\n    return (\n      this.ngControl?.value ??\n      (elementHasValue(this.elementRef.nativeElement) &&\n        this.elementRef.nativeElement.value) ??\n      this.elementRef.nativeElement.textContent ??\n      ''\n    );\n  }\n\n  private set value(value: string) {\n    if (this.ngControl?.control?.setValue) {\n      this.ngControl.control.setValue(value);\n    } else if (elementHasValue(this.elementRef.nativeElement)) {\n      this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n    } else {\n      this.renderer.setProperty(\n        this.elementRef.nativeElement,\n        'textContent',\n        value\n      );\n    }\n  }\n\n  private readonly destroy = new Subject<void>();\n\n  constructor(\n    @Optional() private readonly addressProvider: AddressProvider,\n    private readonly elementRef: ElementRef<HTMLElement>,\n    private readonly renderer: Renderer2,\n    private readonly changeDetectorRef: ChangeDetectorRef,\n    @Self() @Optional() private readonly ngControl?: NgControl\n  ) {\n    if (addressProvider == null) {\n      throw new Error(\n        'AddressProvider was not found.\\nIs \"ybCompletion\" in \"ybProvider\"?'\n      );\n    }\n  }\n\n  ngOnInit(): void {\n    this.addressProvider.addressChange\n      .pipe(takeUntil(this.destroy))\n      .subscribe((address) => {\n        let formattedAddress = '';\n\n        if (this.ybRegion) {\n          formattedAddress += address.region;\n        }\n        if (this.ybLocality) {\n          formattedAddress += address.locality;\n        }\n        if (this.ybStreet) {\n          formattedAddress += address.street;\n        }\n        if (this.ybExtended) {\n          formattedAddress += address.extended;\n        }\n\n        // 入力済みの住所と前方一致するなら、続きを入力しているかもしれないので上書きしない\n        if (this.value.startsWith(formattedAddress)) {\n          return;\n        }\n\n        this.value = formattedAddress;\n        this.changeDetectorRef.markForCheck();\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy.next();\n    this.destroy.complete();\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { JsonpClientBackend } from '@angular/common/http';\nimport { YubinbangoJsonpClientBackend } from './yubinbango-data/yubinbango-jsonp-client-backend.service';\nimport { ProviderDirective } from './directives/provider.directive';\nimport { PostalCodeDirective } from './directives/postal-code.directive';\nimport { CompletionDirective } from './directives/completion.directive';\n\n@NgModule({\n  imports: [CommonModule],\n  providers: [\n    { provide: JsonpClientBackend, useClass: YubinbangoJsonpClientBackend },\n  ],\n  declarations: [ProviderDirective, PostalCodeDirective, CompletionDirective],\n  exports: [ProviderDirective, PostalCodeDirective, CompletionDirective],\n})\nexport class NgxYubinbangoModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.PostalCodeResolver","i1","i1.AddressProvider","i2"],"mappings":"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"}