{"version":3,"file":"forty-cdk-separator.mjs","sources":["../../../projects/forty-cdk/separator/src/separator.ts","../../../projects/forty-cdk/separator/src/forty-cdk-separator.ts"],"sourcesContent":["import { booleanAttribute, Directive, input } from '@angular/core';\n\n/**\n * Headless static separator implementing the\n * [WAI-ARIA Separator pattern](https://www.w3.org/WAI/ARIA/apg/patterns/separator/):\n * a non-focusable, semantic-only line that divides groups of content visually\n * and semantically. Set `decorative` so screen readers skip the line when the\n * surrounding layout already conveys the split.\n *\n * The focusable divider that resizes two panes is a separate primitive —\n * `[forPaneResizer]` — so a plain visual divider never pulls the drag /\n * keyboard-resize code in.\n *\n * @example\n * ```html\n * <hr forSeparator />\n * <div forSeparator orientation=\"vertical\"></div>\n * <span forSeparator decorative></span>\n * ```\n */\n@Directive({\n  selector: '[forSeparator]',\n  exportAs: 'forSeparator',\n  host: {\n    '[attr.role]': 'roleAttr()',\n    '[attr.aria-orientation]': 'ariaOrientationAttr()',\n    '[attr.data-orientation]': 'orientation()',\n  },\n})\nexport class ForSeparator {\n  /**\n   * Axis the separator divides along. `horizontal` splits content stacked\n   * vertically; `vertical` splits content arranged horizontally. Defaults to\n   * `horizontal`, matching the `<hr>` element.\n   */\n  readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n  /**\n   * When true, the separator is purely visual: it gets `role=\"none\"` and no\n   * ARIA, so assistive tech treats surrounding content as a single flow. Use\n   * when the line is redundant with adjacent semantics.\n   */\n  readonly decorative = input(false, { transform: booleanAttribute });\n\n  protected roleAttr(): 'separator' | 'none' {\n    return this.decorative() ? 'none' : 'separator';\n  }\n\n  protected ariaOrientationAttr(): 'horizontal' | 'vertical' | null {\n    if (this.decorative()) {\n      return null;\n    }\n    // Omit the attribute for `horizontal` (the ARIA default) to keep the\n    // semantic separator minimal.\n    return this.orientation() === 'vertical' ? 'vertical' : null;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;AAiBG;MAUU,YAAY,CAAA;AACvB;;;;AAIG;IACM,WAAW,GAAG,KAAK,CAA4B,YAAY;oFAAC;AAErE;;;;AAIG;IACM,UAAU,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAEzD,QAAQ,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,MAAM,GAAG,WAAW;IACjD;IAEU,mBAAmB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,OAAO,IAAI;QACb;;;AAGA,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,GAAG,UAAU,GAAG,IAAI;IAC9D;uGA1BW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBATxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,yBAAyB,EAAE,uBAAuB;AAClD,wBAAA,yBAAyB,EAAE,eAAe;AAC3C,qBAAA;AACF,iBAAA;;;AC5BD;;AAEG;;;;"}