@defra/forms-model 3.0.560 → 3.0.562
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/form/form-editor/preview/preview.js +4 -2
 - package/dist/module/form/form-editor/preview/preview.js.map +1 -1
 - package/dist/module/form/form-editor/preview/types.js.map +1 -1
 - package/dist/module/pages/helpers.js +4 -0
 - package/dist/module/pages/helpers.js.map +1 -1
 - package/dist/module/pages/index.js +1 -1
 - package/dist/module/pages/index.js.map +1 -1
 - package/dist/types/form/form-editor/preview/preview.d.ts.map +1 -1
 - package/dist/types/form/form-editor/preview/types.d.ts +1 -0
 - package/dist/types/form/form-editor/preview/types.d.ts.map +1 -1
 - package/dist/types/pages/helpers.d.ts +2 -0
 - package/dist/types/pages/helpers.d.ts.map +1 -1
 - package/dist/types/pages/index.d.ts +1 -1
 - package/dist/types/pages/index.d.ts.map +1 -1
 - package/package.json +1 -1
 - package/src/form/form-editor/preview/preview.js +4 -2
 - package/src/form/form-editor/preview/types.ts +1 -0
 - package/src/pages/helpers.ts +11 -0
 - package/src/pages/index.ts +3 -1
 
| 
         @@ -107,7 +107,8 @@ export class PreviewComponent { 
     | 
|
| 
       107 
107 
     | 
    
         
             
              get label() {
         
     | 
| 
       108 
108 
     | 
    
         
             
                return {
         
     | 
| 
       109 
109 
     | 
    
         
             
                  text: this.titleText,
         
     | 
| 
       110 
     | 
    
         
            -
                  classes: 'govuk-label--l' + this.getHighlight('question')
         
     | 
| 
      
 110 
     | 
    
         
            +
                  classes: 'govuk-label--l' + this.getHighlight('question'),
         
     | 
| 
      
 111 
     | 
    
         
            +
                  isPageHeading: !!this._question?.trim()
         
     | 
| 
       111 
112 
     | 
    
         
             
                };
         
     | 
| 
       112 
113 
     | 
    
         
             
              }
         
     | 
| 
       113 
114 
     | 
    
         | 
| 
         @@ -119,7 +120,8 @@ export class PreviewComponent { 
     | 
|
| 
       119 
120 
     | 
    
         
             
                return {
         
     | 
| 
       120 
121 
     | 
    
         
             
                  legend: {
         
     | 
| 
       121 
122 
     | 
    
         
             
                    text: this.titleText,
         
     | 
| 
       122 
     | 
    
         
            -
                    classes: 'govuk-fieldset__legend--l' + this.getHighlight('question')
         
     | 
| 
      
 123 
     | 
    
         
            +
                    classes: 'govuk-fieldset__legend--l' + this.getHighlight('question'),
         
     | 
| 
      
 124 
     | 
    
         
            +
                    isPageHeading: !!this._question?.trim()
         
     | 
| 
       123 
125 
     | 
    
         
             
                  }
         
     | 
| 
       124 
126 
     | 
    
         
             
                };
         
     | 
| 
       125 
127 
     | 
    
         
             
              }
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"preview.js","names":["ComponentType","HIGHLIGHT_CLASS","PreviewComponent","PATH","_id","undefined","componentType","Details","_questionTemplate","_highlight","_fieldName","_questionRenderer","_htmlElements","_highlighted","constructor","htmlElements","questionRenderer","question","optional","values","_question","_optional","getHighlight","element","titleText","optionalText","questionText","label","text","classes","fieldSet","legend","customRenderFields","_renderInput","id","name","renderInput","render","value","highlight","highlightContent","unHighlightContent"],"sources":["../../../../../src/form/form-editor/preview/preview.js"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { HIGHLIGHT_CLASS } from '~/src/form/form-editor/preview/constants.js'\n\n/**\n * @abstract\n */\nexport class PreviewComponent {\n  static PATH = 'preview-components/'\n  /**\n   * @type { string | undefined }\n   */\n  _id = undefined\n  /**\n   * @abstract\n   * @type {ComponentType}\n   */\n  componentType = ComponentType.Details\n  /**\n   * @abstract\n   * @type {string}\n   * @protected\n   */\n  _questionTemplate = ''\n  /**\n   * @type { string|null }\n   * @protected\n   */\n  _highlight = null\n  /**\n   * @abstract\n   * @type {string}\n   * @protected\n   */\n  _fieldName = ''\n  /**\n   * @type {QuestionRenderer}\n   * @protected\n   */\n  _questionRenderer\n\n  /**\n   * @type {QuestionElements}\n   * @protected\n   */\n  _htmlElements\n  /**\n   * @type {boolean}\n   * @protected\n   */\n  _highlighted = false\n  /**\n   * @type {boolean}\n   * @protected\n   */\n\n  /**\n   * @param {QuestionElements} htmlElements\n   * @param {QuestionRenderer} questionRenderer\n   */\n  constructor(htmlElements, questionRenderer) {\n    const { question, optional } = htmlElements.values\n\n    /**\n     * @type {QuestionElements}\n     * @protected\n     */\n    this._htmlElements = htmlElements\n    /**\n     * @type {string | undefined}\n     * @private\n     */\n    this._question = question\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this._optional = optional\n    /**\n     *\n     * @type {QuestionRenderer}\n     * @protected\n     */\n    this._questionRenderer = questionRenderer\n  }\n\n  /**\n   * @param {string} element\n   * @returns {string}\n   * @protected\n   */\n  getHighlight(element) {\n    return this._highlight === element ? ' highlight' : ''\n  }\n\n  get titleText() {\n    const optionalText = this._optional ? ' (optional)' : ''\n    const questionText =\n      this._question === '' || !this._question ? 'Question' : this._question\n    return questionText + optionalText\n  }\n\n  /**\n   * @protected\n   * @type {DefaultComponent}\n   */\n  get label() {\n    return {\n      text: this.titleText,\n      classes: 'govuk-label--l' + this.getHighlight('question')\n    }\n  }\n\n  /**\n   * @protected\n   * @type {GovukFieldset}\n   */\n  get fieldSet() {\n    return {\n      legend: {\n        text: this.titleText,\n        classes: 'govuk-fieldset__legend--l' + this.getHighlight('question')\n      }\n    }\n  }\n\n  /**\n   * @returns {Partial<QuestionBaseModel>}\n   */\n  get customRenderFields() {\n    return {}\n  }\n\n  /**\n   *\n   * @returns {QuestionBaseModel}\n   * @protected\n   */\n  _renderInput() {\n    return {\n      id: this._fieldName,\n      name: this._fieldName,\n      classes: this._highlighted ? HIGHLIGHT_CLASS : ''\n    }\n  }\n\n  /**\n   * @type {QuestionBaseModel}\n   */\n  get renderInput() {\n    return {\n      ...this._renderInput(),\n      ...this.customRenderFields\n    }\n  }\n\n  render() {\n    this._questionRenderer.render(this._questionTemplate, this.renderInput)\n  }\n\n  /**\n   * @type {string | undefined}\n   */\n  get question() {\n    return this._question\n  }\n\n  /**\n   * @param {string | undefined} value\n   */\n  set question(value) {\n    this._question = value\n    this.render()\n  }\n\n  get optional() {\n    return this._optional\n  }\n\n  /**\n   * @param {boolean} value\n   */\n  set optional(value) {\n    this._optional = value\n    this.render()\n  }\n\n  /**\n   * @type {string | null}\n   */\n  get highlight() {\n    return this._highlight\n  }\n\n  /**\n   * @param {string | null} value\n   */\n  set highlight(value) {\n    this._highlight = value\n    this.render()\n  }\n\n  /**\n   * @type { string | undefined }\n   */\n  get id() {\n    return this._id\n  }\n\n  /**\n   * @param { string | undefined } value\n   */\n  set id(value) {\n    this._id = value\n  }\n\n  /**\n   * no render\n   */\n  highlightContent() {\n    this._highlighted = true\n  }\n\n  /**\n   * no render\n   */\n  unHighlightContent() {\n    this._highlighted = false\n  }\n}\n\n/**\n * @import { QuestionElements, QuestionBaseModel, GovukFieldset, DefaultComponent, QuestionRenderer } from '~/src/form/form-editor/preview/types.js'\n */\n"],"mappings":"AAAA,SAASA,aAAa;AACtB,SAASC,eAAe;;AAExB;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,CAAC;EAC5B,OAAOC,IAAI,GAAG,qBAAqB;EACnC;AACF;AACA;EACEC,GAAG,GAAGC,SAAS;EACf;AACF;AACA;AACA;EACEC,aAAa,GAAGN,aAAa,CAACO,OAAO;EACrC;AACF;AACA;AACA;AACA;EACEC,iBAAiB,GAAG,EAAE;EACtB;AACF;AACA;AACA;EACEC,UAAU,GAAG,IAAI;EACjB;AACF;AACA;AACA;AACA;EACEC,UAAU,GAAG,EAAE;EACf;AACF;AACA;AACA;EACEC,iBAAiB;;EAEjB;AACF;AACA;AACA;EACEC,aAAa;EACb;AACF;AACA;AACA;EACEC,YAAY,GAAG,KAAK;EACpB;AACF;AACA;AACA;;EAEE;AACF;AACA;AACA;EACEC,WAAWA,CAACC,YAAY,EAAEC,gBAAgB,EAAE;IAC1C,MAAM;MAAEC,QAAQ;MAAEC;IAAS,CAAC,GAAGH,YAAY,CAACI,MAAM;;IAElD;AACJ;AACA;AACA;IACI,IAAI,CAACP,aAAa,GAAGG,YAAY;IACjC;AACJ;AACA;AACA;IACI,IAAI,CAACK,SAAS,GAAGH,QAAQ;IACzB;AACJ;AACA;AACA;IACI,IAAI,CAACI,SAAS,GAAGH,QAAQ;IACzB;AACJ;AACA;AACA;AACA;IACI,IAAI,CAACP,iBAAiB,GAAGK,gBAAgB;EAC3C;;EAEA;AACF;AACA;AACA;AACA;EACEM,YAAYA,CAACC,OAAO,EAAE;IACpB,OAAO,IAAI,CAACd,UAAU,KAAKc,OAAO,GAAG,YAAY,GAAG,EAAE;EACxD;EAEA,IAAIC,SAASA,CAAA,EAAG;IACd,MAAMC,YAAY,GAAG,IAAI,CAACJ,SAAS,GAAG,aAAa,GAAG,EAAE;IACxD,MAAMK,YAAY,GAChB,IAAI,CAACN,SAAS,KAAK,EAAE,IAAI,CAAC,IAAI,CAACA,SAAS,GAAG,UAAU,GAAG,IAAI,CAACA,SAAS;IACxE,OAAOM,YAAY,GAAGD,YAAY;EACpC;;EAEA;AACF;AACA;AACA;EACE,IAAIE,KAAKA,CAAA,EAAG;IACV,OAAO;MACLC,IAAI,EAAE,IAAI,CAACJ,SAAS;MACpBK,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAACP,YAAY,CAAC,UAAU; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"preview.js","names":["ComponentType","HIGHLIGHT_CLASS","PreviewComponent","PATH","_id","undefined","componentType","Details","_questionTemplate","_highlight","_fieldName","_questionRenderer","_htmlElements","_highlighted","constructor","htmlElements","questionRenderer","question","optional","values","_question","_optional","getHighlight","element","titleText","optionalText","questionText","label","text","classes","isPageHeading","trim","fieldSet","legend","customRenderFields","_renderInput","id","name","renderInput","render","value","highlight","highlightContent","unHighlightContent"],"sources":["../../../../../src/form/form-editor/preview/preview.js"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { HIGHLIGHT_CLASS } from '~/src/form/form-editor/preview/constants.js'\n\n/**\n * @abstract\n */\nexport class PreviewComponent {\n  static PATH = 'preview-components/'\n  /**\n   * @type { string | undefined }\n   */\n  _id = undefined\n  /**\n   * @abstract\n   * @type {ComponentType}\n   */\n  componentType = ComponentType.Details\n  /**\n   * @abstract\n   * @type {string}\n   * @protected\n   */\n  _questionTemplate = ''\n  /**\n   * @type { string|null }\n   * @protected\n   */\n  _highlight = null\n  /**\n   * @abstract\n   * @type {string}\n   * @protected\n   */\n  _fieldName = ''\n  /**\n   * @type {QuestionRenderer}\n   * @protected\n   */\n  _questionRenderer\n\n  /**\n   * @type {QuestionElements}\n   * @protected\n   */\n  _htmlElements\n  /**\n   * @type {boolean}\n   * @protected\n   */\n  _highlighted = false\n  /**\n   * @type {boolean}\n   * @protected\n   */\n\n  /**\n   * @param {QuestionElements} htmlElements\n   * @param {QuestionRenderer} questionRenderer\n   */\n  constructor(htmlElements, questionRenderer) {\n    const { question, optional } = htmlElements.values\n\n    /**\n     * @type {QuestionElements}\n     * @protected\n     */\n    this._htmlElements = htmlElements\n    /**\n     * @type {string | undefined}\n     * @private\n     */\n    this._question = question\n    /**\n     * @type {boolean}\n     * @private\n     */\n    this._optional = optional\n    /**\n     *\n     * @type {QuestionRenderer}\n     * @protected\n     */\n    this._questionRenderer = questionRenderer\n  }\n\n  /**\n   * @param {string} element\n   * @returns {string}\n   * @protected\n   */\n  getHighlight(element) {\n    return this._highlight === element ? ' highlight' : ''\n  }\n\n  get titleText() {\n    const optionalText = this._optional ? ' (optional)' : ''\n    const questionText =\n      this._question === '' || !this._question ? 'Question' : this._question\n    return questionText + optionalText\n  }\n\n  /**\n   * @protected\n   * @type {DefaultComponent}\n   */\n  get label() {\n    return {\n      text: this.titleText,\n      classes: 'govuk-label--l' + this.getHighlight('question'),\n      isPageHeading: !!this._question?.trim()\n    }\n  }\n\n  /**\n   * @protected\n   * @type {GovukFieldset}\n   */\n  get fieldSet() {\n    return {\n      legend: {\n        text: this.titleText,\n        classes: 'govuk-fieldset__legend--l' + this.getHighlight('question'),\n        isPageHeading: !!this._question?.trim()\n      }\n    }\n  }\n\n  /**\n   * @returns {Partial<QuestionBaseModel>}\n   */\n  get customRenderFields() {\n    return {}\n  }\n\n  /**\n   *\n   * @returns {QuestionBaseModel}\n   * @protected\n   */\n  _renderInput() {\n    return {\n      id: this._fieldName,\n      name: this._fieldName,\n      classes: this._highlighted ? HIGHLIGHT_CLASS : ''\n    }\n  }\n\n  /**\n   * @type {QuestionBaseModel}\n   */\n  get renderInput() {\n    return {\n      ...this._renderInput(),\n      ...this.customRenderFields\n    }\n  }\n\n  render() {\n    this._questionRenderer.render(this._questionTemplate, this.renderInput)\n  }\n\n  /**\n   * @type {string | undefined}\n   */\n  get question() {\n    return this._question\n  }\n\n  /**\n   * @param {string | undefined} value\n   */\n  set question(value) {\n    this._question = value\n    this.render()\n  }\n\n  get optional() {\n    return this._optional\n  }\n\n  /**\n   * @param {boolean} value\n   */\n  set optional(value) {\n    this._optional = value\n    this.render()\n  }\n\n  /**\n   * @type {string | null}\n   */\n  get highlight() {\n    return this._highlight\n  }\n\n  /**\n   * @param {string | null} value\n   */\n  set highlight(value) {\n    this._highlight = value\n    this.render()\n  }\n\n  /**\n   * @type { string | undefined }\n   */\n  get id() {\n    return this._id\n  }\n\n  /**\n   * @param { string | undefined } value\n   */\n  set id(value) {\n    this._id = value\n  }\n\n  /**\n   * no render\n   */\n  highlightContent() {\n    this._highlighted = true\n  }\n\n  /**\n   * no render\n   */\n  unHighlightContent() {\n    this._highlighted = false\n  }\n}\n\n/**\n * @import { QuestionElements, QuestionBaseModel, GovukFieldset, DefaultComponent, QuestionRenderer } from '~/src/form/form-editor/preview/types.js'\n */\n"],"mappings":"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","ignoreList":[]}
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/form/form-editor/preview/types.ts"],"sourcesContent":["import {\n  type PagePreviewPanelMacro,\n  type QuestionBaseModel\n} from '~/src/form/form-editor/macros/types.js'\nimport { type AutocompleteQuestion } from '~/src/form/form-editor/preview/autocomplete.js'\nimport { type DateInputQuestion } from '~/src/form/form-editor/preview/date-input.js'\nimport { type EmailAddressQuestion } from '~/src/form/form-editor/preview/email-address.js'\nimport { type ListSortableQuestion } from '~/src/form/form-editor/preview/list-sortable.js'\nimport { type LongAnswerQuestion } from '~/src/form/form-editor/preview/long-answer.js'\nimport { type PhoneNumberQuestion } from '~/src/form/form-editor/preview/phone-number.js'\nimport { type Question } from '~/src/form/form-editor/preview/question.js'\nimport { type RadioSortableQuestion } from '~/src/form/form-editor/preview/radio-sortable.js'\nimport { type SelectSortableQuestion } from '~/src/form/form-editor/preview/select-sortable.js'\nimport { type ShortAnswerQuestion } from '~/src/form/form-editor/preview/short-answer.js'\nimport { type UkAddressQuestion } from '~/src/form/form-editor/preview/uk-address.js'\nimport { type ListElement } from '~/src/form/form-editor/types.js'\nexport { type QuestionBaseModel } from '~/src/form/form-editor/macros/types.js'\nexport interface BaseSettings {\n  question: string\n  hintText: string\n  optional: boolean\n  shortDesc: string\n  items: ListElement[]\n  content: string\n  attributes?: Record<string, string>\n}\n\nexport interface DefaultComponent {\n  id?: string\n  text: string\n  classes: string\n}\n\nexport interface GovukFieldset {\n  legend: DefaultComponent\n}\n\nexport type ListenerRow = [\n  HTMLInputElement | null,\n  (target: HTMLInputElement, e: Event) => void,\n  keyof HTMLElementEventMap\n]\n\nexport interface DomElementsBase {\n  readonly values?: BaseSettings\n  autocompleteOptions?: string\n  setPreviewHTML(value: string): void\n  setPreviewDOM(element: HTMLElement): void\n}\n\nexport interface QuestionElements extends DomElementsBase {\n  readonly values: BaseSettings\n}\n\nexport interface AutocompleteElements extends QuestionElements {\n  autocompleteOptions: string\n}\n\nexport interface RenderBase {\n  render(questionTemplate: string, renderContext: RenderContext): void\n}\n\nexport interface QuestionRenderContext {\n  model: QuestionBaseModel\n}\n\nexport interface PageRenderContext {\n  params: PagePreviewPanelMacro\n}\n\nexport type RenderContext = QuestionRenderContext | PageRenderContext\n\nexport interface HTMLBuilder {\n  buildHTML(questionTemplate: string, renderContext: RenderContext): string\n}\n\nexport interface QuestionRenderer {\n  render(questionTemplate: string, questionBaseModel: QuestionBaseModel): void\n}\n\nexport interface PageRenderer {\n  render(pageTemplate: string, pagePreview: PagePreviewPanelMacro): void\n}\n\nexport type Renderer = QuestionRenderer | PageRenderer\n\nexport interface ListElements extends QuestionElements {\n  afterInputsHTML: string\n}\n\nexport interface PagePreviewBaseElements {\n  heading: string\n  guidance: string\n}\n\nexport interface PageOverviewElements extends PagePreviewBaseElements {\n  addHeading: boolean\n  repeatQuestion: string | undefined\n  hasRepeater: boolean\n}\n\nexport interface SummaryPageElements extends PagePreviewBaseElements {\n  declaration: boolean\n}\n\nexport type PreviewQuestion =\n  | DateInputQuestion\n  | EmailAddressQuestion\n  | ListSortableQuestion\n  | LongAnswerQuestion\n  | PhoneNumberQuestion\n  | Question\n  | RadioSortableQuestion\n  | SelectSortableQuestion\n  | ShortAnswerQuestion\n  | UkAddressQuestion\n  | AutocompleteQuestion\n"],"mappings":"","ignoreList":[]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/form/form-editor/preview/types.ts"],"sourcesContent":["import {\n  type PagePreviewPanelMacro,\n  type QuestionBaseModel\n} from '~/src/form/form-editor/macros/types.js'\nimport { type AutocompleteQuestion } from '~/src/form/form-editor/preview/autocomplete.js'\nimport { type DateInputQuestion } from '~/src/form/form-editor/preview/date-input.js'\nimport { type EmailAddressQuestion } from '~/src/form/form-editor/preview/email-address.js'\nimport { type ListSortableQuestion } from '~/src/form/form-editor/preview/list-sortable.js'\nimport { type LongAnswerQuestion } from '~/src/form/form-editor/preview/long-answer.js'\nimport { type PhoneNumberQuestion } from '~/src/form/form-editor/preview/phone-number.js'\nimport { type Question } from '~/src/form/form-editor/preview/question.js'\nimport { type RadioSortableQuestion } from '~/src/form/form-editor/preview/radio-sortable.js'\nimport { type SelectSortableQuestion } from '~/src/form/form-editor/preview/select-sortable.js'\nimport { type ShortAnswerQuestion } from '~/src/form/form-editor/preview/short-answer.js'\nimport { type UkAddressQuestion } from '~/src/form/form-editor/preview/uk-address.js'\nimport { type ListElement } from '~/src/form/form-editor/types.js'\nexport { type QuestionBaseModel } from '~/src/form/form-editor/macros/types.js'\nexport interface BaseSettings {\n  question: string\n  hintText: string\n  optional: boolean\n  shortDesc: string\n  items: ListElement[]\n  content: string\n  attributes?: Record<string, string>\n}\n\nexport interface DefaultComponent {\n  id?: string\n  text: string\n  classes: string\n  isPageHeading?: boolean\n}\n\nexport interface GovukFieldset {\n  legend: DefaultComponent\n}\n\nexport type ListenerRow = [\n  HTMLInputElement | null,\n  (target: HTMLInputElement, e: Event) => void,\n  keyof HTMLElementEventMap\n]\n\nexport interface DomElementsBase {\n  readonly values?: BaseSettings\n  autocompleteOptions?: string\n  setPreviewHTML(value: string): void\n  setPreviewDOM(element: HTMLElement): void\n}\n\nexport interface QuestionElements extends DomElementsBase {\n  readonly values: BaseSettings\n}\n\nexport interface AutocompleteElements extends QuestionElements {\n  autocompleteOptions: string\n}\n\nexport interface RenderBase {\n  render(questionTemplate: string, renderContext: RenderContext): void\n}\n\nexport interface QuestionRenderContext {\n  model: QuestionBaseModel\n}\n\nexport interface PageRenderContext {\n  params: PagePreviewPanelMacro\n}\n\nexport type RenderContext = QuestionRenderContext | PageRenderContext\n\nexport interface HTMLBuilder {\n  buildHTML(questionTemplate: string, renderContext: RenderContext): string\n}\n\nexport interface QuestionRenderer {\n  render(questionTemplate: string, questionBaseModel: QuestionBaseModel): void\n}\n\nexport interface PageRenderer {\n  render(pageTemplate: string, pagePreview: PagePreviewPanelMacro): void\n}\n\nexport type Renderer = QuestionRenderer | PageRenderer\n\nexport interface ListElements extends QuestionElements {\n  afterInputsHTML: string\n}\n\nexport interface PagePreviewBaseElements {\n  heading: string\n  guidance: string\n}\n\nexport interface PageOverviewElements extends PagePreviewBaseElements {\n  addHeading: boolean\n  repeatQuestion: string | undefined\n  hasRepeater: boolean\n}\n\nexport interface SummaryPageElements extends PagePreviewBaseElements {\n  declaration: boolean\n}\n\nexport type PreviewQuestion =\n  | DateInputQuestion\n  | EmailAddressQuestion\n  | ListSortableQuestion\n  | LongAnswerQuestion\n  | PhoneNumberQuestion\n  | Question\n  | RadioSortableQuestion\n  | SelectSortableQuestion\n  | ShortAnswerQuestion\n  | UkAddressQuestion\n  | AutocompleteQuestion\n"],"mappings":"","ignoreList":[]}
         
     | 
| 
         @@ -139,4 +139,8 @@ export function getPageTitle(page) { 
     | 
|
| 
       139 
139 
     | 
    
         
             
            export function getPageFromDefinition(definition, pageId) {
         
     | 
| 
       140 
140 
     | 
    
         
             
              return definition.pages.find(x => x.id === pageId);
         
     | 
| 
       141 
141 
     | 
    
         
             
            }
         
     | 
| 
      
 142 
     | 
    
         
            +
            export const summaryPageControllers = [ControllerType.Summary, ControllerType.SummaryWithConfirmationEmail];
         
     | 
| 
      
 143 
     | 
    
         
            +
            export function isSummaryPage(page) {
         
     | 
| 
      
 144 
     | 
    
         
            +
              return summaryPageControllers.includes(page?.controller ?? ControllerType.Page);
         
     | 
| 
      
 145 
     | 
    
         
            +
            }
         
     | 
| 
       142 
146 
     | 
    
         
             
            //# sourceMappingURL=helpers.js.map
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"helpers.js","names":["ComponentType","hasFormField","ControllerNames","ControllerTypes","ControllerType","PageTypes","getPageDefaults","page","nameOrPath","controller","Page","controllerNameFromPath","defaults","find","pageType","Error","structuredClone","hasComponents","hasNext","Array","isArray","components","hasComponentsEvenIfNoNext","undefined","hasFormComponents","Start","hasRepeater","Repeat","isControllerName","map","String","includes","Terminal","FileUpload","options","path","name","includesFileUploadField","some","component","type","FileUploadField","SHOW_REPEATER_CONTROLLERS","showRepeaterSettings","omitFileUploadComponent","length","getPageTitle","title","firstComp","getPageFromDefinition","definition","pageId","pages","x","id"],"sources":["../../../src/pages/helpers.ts"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { hasFormField } from '~/src/components/helpers.js'\nimport { type ComponentDef } from '~/src/components/types.js'\nimport {\n  type Link,\n  type Page,\n  type PageFileUpload,\n  type PageQuestion,\n  type PageRepeat\n} from '~/src/form/form-definition/types.js'\nimport { type FormDefinition } from '~/src/index.js'\nimport {\n  ControllerNames,\n  ControllerTypes\n} from '~/src/pages/controller-types.js'\nimport { ControllerType } from '~/src/pages/enums.js'\nimport { PageTypes } from '~/src/pages/page-types.js'\n\n/**\n * Return component defaults by type\n */\nexport function getPageDefaults<PageType extends Page>(\n  page?: Pick<PageType, 'controller'>\n) {\n  const nameOrPath = page?.controller ?? ControllerType.Page\n  const controller = controllerNameFromPath(nameOrPath)\n\n  const defaults = PageTypes.find(\n    (pageType) => pageType.controller === controller\n  )\n\n  if (!defaults) {\n    throw new Error(`Defaults not found for page type '${nameOrPath}'`)\n  }\n\n  return structuredClone(defaults) as PageType\n}\n\n/**\n * Check page has components\n */\nexport function hasComponents(\n  page?: Partial<Page>\n): page is Extract<Page, { components: ComponentDef[] }> {\n  return hasNext(page) && Array.isArray(page.components)\n}\n\n/**\n * Check if the page has components (the page can be any page type e.g. SummaryPage)\n */\nexport function hasComponentsEvenIfNoNext(\n  page?: Partial<Page>\n): page is Extract<Page, { components: ComponentDef[] }> {\n  return (\n    page !== undefined && 'components' in page && Array.isArray(page.components)\n  )\n}\n\n/**\n * Check page has form components\n */\nexport function hasFormComponents(\n  page?: Partial<Page>\n): page is PageQuestion | PageFileUpload {\n  const controller = controllerNameFromPath(page?.controller)\n  return hasComponents(page) && controller !== ControllerType.Start\n}\n\n/**\n * Check page has repeater\n */\nexport function hasRepeater(page?: Partial<Page>): page is PageRepeat {\n  return controllerNameFromPath(page?.controller) === ControllerType.Repeat\n}\n\n/**\n * Check for known page controller names\n */\nexport function isControllerName(\n  nameOrPath?: ControllerType | string\n): nameOrPath is ControllerType {\n  return !!nameOrPath && ControllerNames.map(String).includes(nameOrPath)\n}\n\n/**\n * Check page has next link\n */\nexport function hasNext(\n  page?: Partial<Page>\n): page is Extract<Page, { next: Link[] }> {\n  if (!page || !('next' in page)) {\n    return false\n  }\n\n  const controller = controllerNameFromPath(page.controller)\n\n  return (\n    !controller ||\n    controller === ControllerType.Start ||\n    controller === ControllerType.Page ||\n    controller === ControllerType.Terminal ||\n    controller === ControllerType.FileUpload ||\n    controller === ControllerType.Repeat\n  )\n}\n\n/**\n * Check and optionally replace legacy path with controller name\n * @param {string} [nameOrPath] - Controller name or legacy controller path\n */\nexport function controllerNameFromPath(nameOrPath?: ControllerType | string) {\n  if (isControllerName(nameOrPath)) {\n    return nameOrPath\n  }\n\n  const options = ControllerTypes.find(({ path }) => path === nameOrPath)\n  return options?.name\n}\n\nexport function includesFileUploadField(components: ComponentDef[]): boolean {\n  return components.some(\n    (component) => component.type === ComponentType.FileUploadField\n  )\n}\n\nconst SHOW_REPEATER_CONTROLLERS = [ControllerType.Page, ControllerType.Repeat]\n\nexport function showRepeaterSettings(page: Page): boolean {\n  if (page.controller && !SHOW_REPEATER_CONTROLLERS.includes(page.controller)) {\n    return false\n  }\n  if (hasComponents(page) && includesFileUploadField(page.components)) {\n    return false\n  }\n  return true\n}\n\n/**\n * High level check for whether file upload component should be omitted\n * @param { Page | undefined } page\n * @returns {boolean}\n */\nexport function omitFileUploadComponent(page: Page | undefined): boolean {\n  if (page?.controller === ControllerType.Repeat) {\n    return true\n  }\n  if (!hasComponents(page)) {\n    return false\n  }\n  if (page.components.length > 1) {\n    return true\n  }\n  if (includesFileUploadField(page.components)) {\n    return true\n  }\n  return false\n}\n\n/**\n * Gets page title, or title of first question (if no page title set)\n * @param {Page} page\n * @returns {string}\n */\nexport function getPageTitle(page: Page) {\n  if (page.title !== '') {\n    return page.title\n  }\n\n  if (hasComponentsEvenIfNoNext(page)) {\n    const firstComp = page.components.find(hasFormField)\n    if (firstComp) {\n      return firstComp.title\n    }\n  }\n  return 'Page title unknown'\n}\n\n/**\n *\n * @param {FormDefinition} definition\n * @param {string} pageId\n * @returns { Page | undefined }\n */\nexport function getPageFromDefinition(\n  definition: FormDefinition,\n  pageId: string\n): Page | undefined {\n  return definition.pages.find((x) => x.id === pageId)\n}\n"],"mappings":"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","ignoreList":[]}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"helpers.js","names":["ComponentType","hasFormField","ControllerNames","ControllerTypes","ControllerType","PageTypes","getPageDefaults","page","nameOrPath","controller","Page","controllerNameFromPath","defaults","find","pageType","Error","structuredClone","hasComponents","hasNext","Array","isArray","components","hasComponentsEvenIfNoNext","undefined","hasFormComponents","Start","hasRepeater","Repeat","isControllerName","map","String","includes","Terminal","FileUpload","options","path","name","includesFileUploadField","some","component","type","FileUploadField","SHOW_REPEATER_CONTROLLERS","showRepeaterSettings","omitFileUploadComponent","length","getPageTitle","title","firstComp","getPageFromDefinition","definition","pageId","pages","x","id","summaryPageControllers","Summary","SummaryWithConfirmationEmail","isSummaryPage"],"sources":["../../../src/pages/helpers.ts"],"sourcesContent":["import { ComponentType } from '~/src/components/enums.js'\nimport { hasFormField } from '~/src/components/helpers.js'\nimport { type ComponentDef } from '~/src/components/types.js'\nimport {\n  type Link,\n  type Page,\n  type PageFileUpload,\n  type PageQuestion,\n  type PageRepeat\n} from '~/src/form/form-definition/types.js'\nimport { type FormDefinition } from '~/src/index.js'\nimport {\n  ControllerNames,\n  ControllerTypes\n} from '~/src/pages/controller-types.js'\nimport { ControllerType } from '~/src/pages/enums.js'\nimport { PageTypes } from '~/src/pages/page-types.js'\n\n/**\n * Return component defaults by type\n */\nexport function getPageDefaults<PageType extends Page>(\n  page?: Pick<PageType, 'controller'>\n) {\n  const nameOrPath = page?.controller ?? ControllerType.Page\n  const controller = controllerNameFromPath(nameOrPath)\n\n  const defaults = PageTypes.find(\n    (pageType) => pageType.controller === controller\n  )\n\n  if (!defaults) {\n    throw new Error(`Defaults not found for page type '${nameOrPath}'`)\n  }\n\n  return structuredClone(defaults) as PageType\n}\n\n/**\n * Check page has components\n */\nexport function hasComponents(\n  page?: Partial<Page>\n): page is Extract<Page, { components: ComponentDef[] }> {\n  return hasNext(page) && Array.isArray(page.components)\n}\n\n/**\n * Check if the page has components (the page can be any page type e.g. SummaryPage)\n */\nexport function hasComponentsEvenIfNoNext(\n  page?: Partial<Page>\n): page is Extract<Page, { components: ComponentDef[] }> {\n  return (\n    page !== undefined && 'components' in page && Array.isArray(page.components)\n  )\n}\n\n/**\n * Check page has form components\n */\nexport function hasFormComponents(\n  page?: Partial<Page>\n): page is PageQuestion | PageFileUpload {\n  const controller = controllerNameFromPath(page?.controller)\n  return hasComponents(page) && controller !== ControllerType.Start\n}\n\n/**\n * Check page has repeater\n */\nexport function hasRepeater(page?: Partial<Page>): page is PageRepeat {\n  return controllerNameFromPath(page?.controller) === ControllerType.Repeat\n}\n\n/**\n * Check for known page controller names\n */\nexport function isControllerName(\n  nameOrPath?: ControllerType | string\n): nameOrPath is ControllerType {\n  return !!nameOrPath && ControllerNames.map(String).includes(nameOrPath)\n}\n\n/**\n * Check page has next link\n */\nexport function hasNext(\n  page?: Partial<Page>\n): page is Extract<Page, { next: Link[] }> {\n  if (!page || !('next' in page)) {\n    return false\n  }\n\n  const controller = controllerNameFromPath(page.controller)\n\n  return (\n    !controller ||\n    controller === ControllerType.Start ||\n    controller === ControllerType.Page ||\n    controller === ControllerType.Terminal ||\n    controller === ControllerType.FileUpload ||\n    controller === ControllerType.Repeat\n  )\n}\n\n/**\n * Check and optionally replace legacy path with controller name\n * @param {string} [nameOrPath] - Controller name or legacy controller path\n */\nexport function controllerNameFromPath(nameOrPath?: ControllerType | string) {\n  if (isControllerName(nameOrPath)) {\n    return nameOrPath\n  }\n\n  const options = ControllerTypes.find(({ path }) => path === nameOrPath)\n  return options?.name\n}\n\nexport function includesFileUploadField(components: ComponentDef[]): boolean {\n  return components.some(\n    (component) => component.type === ComponentType.FileUploadField\n  )\n}\n\nconst SHOW_REPEATER_CONTROLLERS = [ControllerType.Page, ControllerType.Repeat]\n\nexport function showRepeaterSettings(page: Page): boolean {\n  if (page.controller && !SHOW_REPEATER_CONTROLLERS.includes(page.controller)) {\n    return false\n  }\n  if (hasComponents(page) && includesFileUploadField(page.components)) {\n    return false\n  }\n  return true\n}\n\n/**\n * High level check for whether file upload component should be omitted\n * @param { Page | undefined } page\n * @returns {boolean}\n */\nexport function omitFileUploadComponent(page: Page | undefined): boolean {\n  if (page?.controller === ControllerType.Repeat) {\n    return true\n  }\n  if (!hasComponents(page)) {\n    return false\n  }\n  if (page.components.length > 1) {\n    return true\n  }\n  if (includesFileUploadField(page.components)) {\n    return true\n  }\n  return false\n}\n\n/**\n * Gets page title, or title of first question (if no page title set)\n * @param {Page} page\n * @returns {string}\n */\nexport function getPageTitle(page: Page) {\n  if (page.title !== '') {\n    return page.title\n  }\n\n  if (hasComponentsEvenIfNoNext(page)) {\n    const firstComp = page.components.find(hasFormField)\n    if (firstComp) {\n      return firstComp.title\n    }\n  }\n  return 'Page title unknown'\n}\n\n/**\n *\n * @param {FormDefinition} definition\n * @param {string} pageId\n * @returns { Page | undefined }\n */\nexport function getPageFromDefinition(\n  definition: FormDefinition,\n  pageId: string\n): Page | undefined {\n  return definition.pages.find((x) => x.id === pageId)\n}\n\nexport const summaryPageControllers = [\n  ControllerType.Summary,\n  ControllerType.SummaryWithConfirmationEmail\n]\n\nexport function isSummaryPage(page: Page | undefined) {\n  return summaryPageControllers.includes(\n    page?.controller ?? ControllerType.Page\n  )\n}\n"],"mappings":"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","ignoreList":[]}
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            export { ControllerNames, ControllerTypes } from "./controller-types.js";
         
     | 
| 
       2 
2 
     | 
    
         
             
            export { PageTypes } from "./page-types.js";
         
     | 
| 
       3 
     | 
    
         
            -
            export { controllerNameFromPath, getPageDefaults, getPageFromDefinition, getPageTitle, hasComponents, hasComponentsEvenIfNoNext, hasFormComponents, hasNext, hasRepeater, includesFileUploadField, isControllerName, omitFileUploadComponent, showRepeaterSettings } from "./helpers.js";
         
     | 
| 
      
 3 
     | 
    
         
            +
            export { controllerNameFromPath, getPageDefaults, getPageFromDefinition, getPageTitle, hasComponents, hasComponentsEvenIfNoNext, hasFormComponents, hasNext, hasRepeater, includesFileUploadField, isControllerName, isSummaryPage, omitFileUploadComponent, showRepeaterSettings, summaryPageControllers } from "./helpers.js";
         
     | 
| 
       4 
4 
     | 
    
         
             
            export { ControllerPath, ControllerType } from "./enums.js";
         
     | 
| 
       5 
5 
     | 
    
         
             
            //# sourceMappingURL=index.js.map
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"index.js","names":["ControllerNames","ControllerTypes","PageTypes","controllerNameFromPath","getPageDefaults","getPageFromDefinition","getPageTitle","hasComponents","hasComponentsEvenIfNoNext","hasFormComponents","hasNext","hasRepeater","includesFileUploadField","isControllerName","omitFileUploadComponent","showRepeaterSettings","ControllerPath","ControllerType"],"sources":["../../../src/pages/index.ts"],"sourcesContent":["export {\n  ControllerNames,\n  ControllerTypes\n} from '~/src/pages/controller-types.js'\n\nexport { PageTypes } from '~/src/pages/page-types.js'\n\nexport {\n  controllerNameFromPath,\n  getPageDefaults,\n  getPageFromDefinition,\n  getPageTitle,\n  hasComponents,\n  hasComponentsEvenIfNoNext,\n  hasFormComponents,\n  hasNext,\n  hasRepeater,\n  includesFileUploadField,\n  isControllerName,\n  omitFileUploadComponent,\n  showRepeaterSettings\n} from '~/src/pages/helpers.js'\n\nexport { ControllerPath, ControllerType } from '~/src/pages/enums.js'\n"],"mappings":"AAAA,SACEA,eAAe,EACfC,eAAe;AAGjB,SAASC,SAAS;AAElB,SACEC,sBAAsB,EACtBC,eAAe,EACfC,qBAAqB,EACrBC,YAAY,EACZC,aAAa,EACbC,yBAAyB,EACzBC,iBAAiB,EACjBC,OAAO,EACPC,WAAW,EACXC,uBAAuB,EACvBC,gBAAgB,EAChBC,uBAAuB,EACvBC,oBAAoB; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"index.js","names":["ControllerNames","ControllerTypes","PageTypes","controllerNameFromPath","getPageDefaults","getPageFromDefinition","getPageTitle","hasComponents","hasComponentsEvenIfNoNext","hasFormComponents","hasNext","hasRepeater","includesFileUploadField","isControllerName","isSummaryPage","omitFileUploadComponent","showRepeaterSettings","summaryPageControllers","ControllerPath","ControllerType"],"sources":["../../../src/pages/index.ts"],"sourcesContent":["export {\n  ControllerNames,\n  ControllerTypes\n} from '~/src/pages/controller-types.js'\n\nexport { PageTypes } from '~/src/pages/page-types.js'\n\nexport {\n  controllerNameFromPath,\n  getPageDefaults,\n  getPageFromDefinition,\n  getPageTitle,\n  hasComponents,\n  hasComponentsEvenIfNoNext,\n  hasFormComponents,\n  hasNext,\n  hasRepeater,\n  includesFileUploadField,\n  isControllerName,\n  isSummaryPage,\n  omitFileUploadComponent,\n  showRepeaterSettings,\n  summaryPageControllers\n} from '~/src/pages/helpers.js'\n\nexport { ControllerPath, ControllerType } from '~/src/pages/enums.js'\n"],"mappings":"AAAA,SACEA,eAAe,EACfC,eAAe;AAGjB,SAASC,SAAS;AAElB,SACEC,sBAAsB,EACtBC,eAAe,EACfC,qBAAqB,EACrBC,YAAY,EACZC,aAAa,EACbC,yBAAyB,EACzBC,iBAAiB,EACjBC,OAAO,EACPC,WAAW,EACXC,uBAAuB,EACvBC,gBAAgB,EAChBC,aAAa,EACbC,uBAAuB,EACvBC,oBAAoB,EACpBC,sBAAsB;AAGxB,SAASC,cAAc,EAAEC,cAAc","ignoreList":[]}
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../../../src/form/form-editor/preview/preview.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IACE,oBAAmC;IA2CnC;;;OAGG;IAEH;;;OAGG;IACH,0BAHW,gBAAgB,oBAChB,gBAAgB,EA0B1B;IA3ED;;OAEG;IACH,KAFW,MAAM,GAAG,SAAS,CAEd;IACf;;;OAGG;IACH,eAFU,aAAa,CAEc;IACrC;;;;OAIG;IACH,6BAHU,MAAM,CAGM;IACtB;;;OAGG;IACH,sBAHW,MAAM,GAAC,IAAI,CAGL;IACjB;;;;OAIG;IACH,sBAHU,MAAM,CAGD;IACf;;;OAGG;IACH,6BAHU,gBAAgB,CAGT;IAEjB;;;OAGG;IACH,yBAHU,gBAAgB,CAGb;IACb;;;OAGG;IACH,wBAHU,OAAO,CAGG;IAkBlB;;;OAGG;IACH,kBAAyB;IACzB;;;OAGG;IACH,kBAAyB;IAS3B;;;;OAIG;IACH,gCAJW,MAAM,GACJ,MAAM,CAKlB;IAED,wBAKC;IAED;;;OAGG;IACH,uBAFU,gBAAgB, 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../../../src/form/form-editor/preview/preview.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IACE,oBAAmC;IA2CnC;;;OAGG;IAEH;;;OAGG;IACH,0BAHW,gBAAgB,oBAChB,gBAAgB,EA0B1B;IA3ED;;OAEG;IACH,KAFW,MAAM,GAAG,SAAS,CAEd;IACf;;;OAGG;IACH,eAFU,aAAa,CAEc;IACrC;;;;OAIG;IACH,6BAHU,MAAM,CAGM;IACtB;;;OAGG;IACH,sBAHW,MAAM,GAAC,IAAI,CAGL;IACjB;;;;OAIG;IACH,sBAHU,MAAM,CAGD;IACf;;;OAGG;IACH,6BAHU,gBAAgB,CAGT;IAEjB;;;OAGG;IACH,yBAHU,gBAAgB,CAGb;IACb;;;OAGG;IACH,wBAHU,OAAO,CAGG;IAkBlB;;;OAGG;IACH,kBAAyB;IACzB;;;OAGG;IACH,kBAAyB;IAS3B;;;;OAIG;IACH,gCAJW,MAAM,GACJ,MAAM,CAKlB;IAED,wBAKC;IAED;;;OAGG;IACH,uBAFU,gBAAgB,CAQzB;IAED;;;OAGG;IACH,0BAFU,aAAa,CAUtB;IAED;;OAEG;IACH,0BAFa,OAAO,CAAC,iBAAiB,CAAC,CAItC;IAED;;;;OAIG;IACH,0BAHa,iBAAiB,CAS7B;IAED;;OAEG;IACH,mBAFU,iBAAiB,CAO1B;IAED,eAEC;IASD;;OAEG;IACH,oBAFW,MAAM,GAAG,SAAS,EAK5B;IAbD;;OAEG;IACH,gBAFU,MAAM,GAAG,SAAS,CAI3B;IAcD;;OAEG;IACH,oBAFW,OAAO,EAKjB;IAVD,gBAKW,OAAO,CAHjB;IAiBD;;OAEG;IACH,qBAFW,MAAM,GAAG,IAAI,EAKvB;IAbD;;OAEG;IACH,iBAFU,MAAM,GAAG,IAAI,CAItB;IAiBD;;OAEG;IACH,cAFY,MAAM,GAAG,SAAS,EAI7B;IAZD;;OAEG;IACH,UAFW,MAAM,GAAG,SAAS,CAI5B;IASD;;OAEG;IACH,yBAEC;IAED;;OAEG;IACH,2BAEC;CACF;8BAtO6B,2BAA2B;sCAyOkD,yCAAyC;sCAAzC,yCAAyC;sCAAzC,yCAAyC;mCAAzC,yCAAyC;uCAAzC,yCAAyC"}
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/form/form-editor/preview/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,gDAAgD,CAAA;AAC1F,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,8CAA8C,CAAA;AACrF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,iDAAiD,CAAA;AAC3F,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,iDAAiD,CAAA;AAC3F,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,+CAA+C,CAAA;AACvF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gDAAgD,CAAA;AACzF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kDAAkD,CAAA;AAC7F,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mDAAmD,CAAA;AAC/F,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gDAAgD,CAAA;AACzF,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,8CAA8C,CAAA;AACrF,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/form/form-editor/preview/types.ts"],"names":[],"mappings":"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"}
         
     | 
| 
         @@ -62,4 +62,6 @@ export declare function getPageTitle(page: Page): string; 
     | 
|
| 
       62 
62 
     | 
    
         
             
             * @returns { Page | undefined }
         
     | 
| 
       63 
63 
     | 
    
         
             
             */
         
     | 
| 
       64 
64 
     | 
    
         
             
            export declare function getPageFromDefinition(definition: FormDefinition, pageId: string): Page | undefined;
         
     | 
| 
      
 65 
     | 
    
         
            +
            export declare const summaryPageControllers: ControllerType[];
         
     | 
| 
      
 66 
     | 
    
         
            +
            export declare function isSummaryPage(page: Page | undefined): boolean;
         
     | 
| 
       65 
67 
     | 
    
         
             
            //# sourceMappingURL=helpers.d.ts.map
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/pages/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EACL,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAKpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,IAAI,EACnD,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,GAaC,QAAQ,CAC7C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GACnB,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAEvD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GACnB,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAIvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GACnB,IAAI,IAAI,YAAY,GAAG,cAAc,CAGvC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,UAAU,CAEpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,CAAC,EAAE,cAAc,GAAG,MAAM,GACnC,UAAU,IAAI,cAAc,CAE9B;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GACnB,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CAezC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,cAAc,GAAG,MAAM,8BAO1E;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAI3E;AAID,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAQxD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAcvE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,UAYtC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,MAAM,GACb,IAAI,GAAG,SAAS,CAElB"}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/pages/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EACL,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAKpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAGrD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,IAAI,EACnD,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,GAaC,QAAQ,CAC7C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GACnB,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAEvD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GACnB,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAIvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GACnB,IAAI,IAAI,YAAY,GAAG,cAAc,CAGvC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,UAAU,CAEpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,CAAC,EAAE,cAAc,GAAG,MAAM,GACnC,UAAU,IAAI,cAAc,CAE9B;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GACnB,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CAezC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,cAAc,GAAG,MAAM,8BAO1E;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAI3E;AAID,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAQxD;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAcvE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,UAYtC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,MAAM,GACb,IAAI,GAAG,SAAS,CAElB;AAED,eAAO,MAAM,sBAAsB,kBAGlC,CAAA;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,WAInD"}
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            export { ControllerNames, ControllerTypes } from '../pages/controller-types.js';
         
     | 
| 
       2 
2 
     | 
    
         
             
            export { PageTypes } from '../pages/page-types.js';
         
     | 
| 
       3 
     | 
    
         
            -
            export { controllerNameFromPath, getPageDefaults, getPageFromDefinition, getPageTitle, hasComponents, hasComponentsEvenIfNoNext, hasFormComponents, hasNext, hasRepeater, includesFileUploadField, isControllerName, omitFileUploadComponent, showRepeaterSettings } from '../pages/helpers.js';
         
     | 
| 
      
 3 
     | 
    
         
            +
            export { controllerNameFromPath, getPageDefaults, getPageFromDefinition, getPageTitle, hasComponents, hasComponentsEvenIfNoNext, hasFormComponents, hasNext, hasRepeater, includesFileUploadField, isControllerName, isSummaryPage, omitFileUploadComponent, showRepeaterSettings, summaryPageControllers } from '../pages/helpers.js';
         
     | 
| 
       4 
4 
     | 
    
         
             
            export { ControllerPath, ControllerType } from '../pages/enums.js';
         
     | 
| 
       5 
5 
     | 
    
         
             
            //# sourceMappingURL=index.d.ts.map
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EAChB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,yBAAyB,EACzB,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB, 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EAChB,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,yBAAyB,EACzB,iBAAiB,EACjB,OAAO,EACP,WAAW,EACX,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
         
     | 
    
        package/package.json
    CHANGED
    
    
| 
         @@ -106,7 +106,8 @@ export class PreviewComponent { 
     | 
|
| 
       106 
106 
     | 
    
         
             
              get label() {
         
     | 
| 
       107 
107 
     | 
    
         
             
                return {
         
     | 
| 
       108 
108 
     | 
    
         
             
                  text: this.titleText,
         
     | 
| 
       109 
     | 
    
         
            -
                  classes: 'govuk-label--l' + this.getHighlight('question')
         
     | 
| 
      
 109 
     | 
    
         
            +
                  classes: 'govuk-label--l' + this.getHighlight('question'),
         
     | 
| 
      
 110 
     | 
    
         
            +
                  isPageHeading: !!this._question?.trim()
         
     | 
| 
       110 
111 
     | 
    
         
             
                }
         
     | 
| 
       111 
112 
     | 
    
         
             
              }
         
     | 
| 
       112 
113 
     | 
    
         | 
| 
         @@ -118,7 +119,8 @@ export class PreviewComponent { 
     | 
|
| 
       118 
119 
     | 
    
         
             
                return {
         
     | 
| 
       119 
120 
     | 
    
         
             
                  legend: {
         
     | 
| 
       120 
121 
     | 
    
         
             
                    text: this.titleText,
         
     | 
| 
       121 
     | 
    
         
            -
                    classes: 'govuk-fieldset__legend--l' + this.getHighlight('question')
         
     | 
| 
      
 122 
     | 
    
         
            +
                    classes: 'govuk-fieldset__legend--l' + this.getHighlight('question'),
         
     | 
| 
      
 123 
     | 
    
         
            +
                    isPageHeading: !!this._question?.trim()
         
     | 
| 
       122 
124 
     | 
    
         
             
                  }
         
     | 
| 
       123 
125 
     | 
    
         
             
                }
         
     | 
| 
       124 
126 
     | 
    
         
             
              }
         
     | 
    
        package/src/pages/helpers.ts
    CHANGED
    
    | 
         @@ -187,3 +187,14 @@ export function getPageFromDefinition( 
     | 
|
| 
       187 
187 
     | 
    
         
             
            ): Page | undefined {
         
     | 
| 
       188 
188 
     | 
    
         
             
              return definition.pages.find((x) => x.id === pageId)
         
     | 
| 
       189 
189 
     | 
    
         
             
            }
         
     | 
| 
      
 190 
     | 
    
         
            +
             
     | 
| 
      
 191 
     | 
    
         
            +
            export const summaryPageControllers = [
         
     | 
| 
      
 192 
     | 
    
         
            +
              ControllerType.Summary,
         
     | 
| 
      
 193 
     | 
    
         
            +
              ControllerType.SummaryWithConfirmationEmail
         
     | 
| 
      
 194 
     | 
    
         
            +
            ]
         
     | 
| 
      
 195 
     | 
    
         
            +
             
     | 
| 
      
 196 
     | 
    
         
            +
            export function isSummaryPage(page: Page | undefined) {
         
     | 
| 
      
 197 
     | 
    
         
            +
              return summaryPageControllers.includes(
         
     | 
| 
      
 198 
     | 
    
         
            +
                page?.controller ?? ControllerType.Page
         
     | 
| 
      
 199 
     | 
    
         
            +
              )
         
     | 
| 
      
 200 
     | 
    
         
            +
            }
         
     | 
    
        package/src/pages/index.ts
    CHANGED
    
    | 
         @@ -17,8 +17,10 @@ export { 
     | 
|
| 
       17 
17 
     | 
    
         
             
              hasRepeater,
         
     | 
| 
       18 
18 
     | 
    
         
             
              includesFileUploadField,
         
     | 
| 
       19 
19 
     | 
    
         
             
              isControllerName,
         
     | 
| 
      
 20 
     | 
    
         
            +
              isSummaryPage,
         
     | 
| 
       20 
21 
     | 
    
         
             
              omitFileUploadComponent,
         
     | 
| 
       21 
     | 
    
         
            -
              showRepeaterSettings
         
     | 
| 
      
 22 
     | 
    
         
            +
              showRepeaterSettings,
         
     | 
| 
      
 23 
     | 
    
         
            +
              summaryPageControllers
         
     | 
| 
       22 
24 
     | 
    
         
             
            } from '~/src/pages/helpers.js'
         
     | 
| 
       23 
25 
     | 
    
         | 
| 
       24 
26 
     | 
    
         
             
            export { ControllerPath, ControllerType } from '~/src/pages/enums.js'
         
     |