@allejo/decap-extras 0.0.7 → 0.0.8

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/index.d.mts CHANGED
@@ -424,6 +424,62 @@ declare function listWidget<T extends string, F extends CmsField[]>(label: strin
424
424
  widget: 'list';
425
425
  fields: F;
426
426
  };
427
+ /**
428
+ * Creates a Markdown widget configuration with the given label and name, and
429
+ * optional additional options.
430
+ *
431
+ * **DecapCMS Configuration (TypeScript)**
432
+ *
433
+ * ```typescript
434
+ * markdownWidget("Biography", "biography")
435
+ * ```
436
+ *
437
+ * **DecapCMS Configuration (YAML)**
438
+ *
439
+ * ```yaml
440
+ * - label: Biography
441
+ * name: biography
442
+ * widget: richtext
443
+ * ```
444
+ *
445
+ * **Data Store YAML**
446
+ *
447
+ * ```yaml
448
+ * biography: |-
449
+ * Hello, world. I was born in the year 2000.
450
+ * ```
451
+ *
452
+ * There are pre-configured constants available for use with the `options`
453
+ * parameter:
454
+ *
455
+ * - INLINE_MARKDOWN
456
+ * - RICH_MARKDOWN
457
+ *
458
+ * For example, to use the `RICH_MARKDOWN` configuration, you can do the following:
459
+ *
460
+ * ```typescript
461
+ * markdownWidget("Biography", "biography", RICH_MARKDOWN)
462
+ * ```
463
+ *
464
+ * @see INLINE_MARKDOWN
465
+ * @see RICH_MARKDOWN
466
+ *
467
+ * @link https://decapcms.org/docs/widgets/#Richtext%20(Beta)
468
+ */
469
+ declare function markdownWidget<T extends string>(label: string, name: T, options?: WidgetOpts<CmsFieldMarkdown>): {
470
+ readonly default?: string;
471
+ readonly minimal?: boolean;
472
+ readonly buttons?: _$decap_cms_core0.CmsMarkdownWidgetButton[];
473
+ readonly editor_components?: string[];
474
+ readonly modes?: ("raw" | "rich_text")[];
475
+ readonly editorComponents?: string[];
476
+ readonly required?: boolean;
477
+ readonly hint?: string;
478
+ readonly pattern?: [string, string];
479
+ readonly label: string;
480
+ readonly name: T;
481
+ readonly widget: "string";
482
+ };
427
483
  /**
428
484
  * Creates an Object widget configuration with the given label, name, fields, and
429
485
  * optional additional options.
@@ -702,5 +758,5 @@ declare const RICH_MARKDOWN: WidgetOpts<CmsFieldMarkdown>;
702
758
  */
703
759
  declare const INLINE_MARKDOWN: WidgetOpts<CmsFieldMarkdown>;
704
760
  //#endregion
705
- export { CollectionItemNames, INLINE_MARKDOWN, OptionalWidget, PropsByCollectionAndFile, RICH_MARKDOWN, WidgetOpts, WidgetTypeFromFactory, boolWidget, imageWidget, listWidget, numberWidget, objectWidget, optional, selectWidget, stringWidget, textWidget };
761
+ export { CollectionItemNames, INLINE_MARKDOWN, OptionalWidget, PropsByCollectionAndFile, RICH_MARKDOWN, WidgetOpts, WidgetTypeFromFactory, boolWidget, imageWidget, listWidget, markdownWidget, numberWidget, objectWidget, optional, selectWidget, stringWidget, textWidget };
706
762
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/api.ts","../src/widgets.ts"],"mappings":";;;;;;;AAMA;KAAY,UAAA;EAAuB,MAAA;EAAiB,MAAA;AAAA,KACnD,IAAI,CAAC,CAAA;EACJ,QAAA;EACA,IAAA;EACA,OAAA;AAAA;AAAA,KAGU,cAAA,WAAyB,QAAA,IAAY,CAAC;EACjD,QAAA;EACA,UAAA;AAAA;AALQ;AAGT;;;;;;;;;;AAEW;AACT;;;;;;;AANO,KA2BJ,4BAAA,MAAkC,CAAA,iCAExB,CAAA,GAAI,CAAA,CAAE,CAAA,mBACf,4BAAA,CAA6B,CAAA,CAAE,CAAA,KAC/B,CAAA,CAAE,CAAA;;;;;;;;;;;;;;;;;;AAAC;KAsBJ,MAAA,+EAID,KAAA,iDACD,KAAA,SAAc,MAAA,CAAO,GAAA,EAAK,KAAA,IACzB,KAAA,GACA,MAAA,CAAO,IAAA,EAAM,GAAA,EAAK,KAAA;;;;KAMjB,eAAA;EAAkC,WAAA;AAAA,KACtC,OAAO;;;;;KAMH,eAAA;EAAkC,WAAA;AAAA,KACtC,eAAA,CAAgB,OAAA;EAAmB,IAAA;AAAA,IAAkB,CAAA;;;;;;;;;;;;;;AAd3B;AAAA;;;;KAkCtB,gBAAA;EACc,WAAA;AAAA,aACR,eAAA,CAAgB,OAAA,KACvB,MAAA,CAAO,OAAA,yBAAgC,CAAA;;AA9BnC;AAAA;;;;;;;;;;;;KA8CH,UAAA;EACQ,KAAA;AAAA,cACF,CAAA;EAA6B,IAAA;AAAA,IAAkB,CAAA,sBACtD,MAAA,CAAO,CAAA,mBAAoB,CAAA;AA1CwB;;;;AAAA,KAgDlD,iBAAA;EACJ,IAAA;EACA,IAAA;EACA,MAAA,WAAiB,QAAQ;AAAA;;;;;;;;;;;AA5BkB;AAAA;;;;KA8CvC,cAAA,yBAAuC,QAAA,cACrC,MAAA,YAAkB,CAAA,SAAU,cAAA,CAAe,CAAA,IAC9C,CAAA,oBACS,sBAAA,CAAuB,CAAA,cAE7B,MAAA,YAAkB,CAAA,SAAU,cAAA,CAAe,CAAA,YAE9C,CAAA,WAAY,sBAAA,CAAuB,CAAA;;;;;;;;;KAWlC,YAAA,WAAuB,iBAAA,IAAqB,cAAA,CAAe,CAAA;;;;AA7ChC;AAAA;;;;;;;;;KA4D3B,sBAAA,WAAiC,QAAA,IAAY,CAAA,uEAM/C,CAAA,uCAEC,CAAA,yCAEC,CAAA,8BACC,CAAA;EAAY,OAAA;AAAA,IACX,CAAA,YAED,CAAA,4BACC,CAAA;EAAY,MAAA,WAAiB,QAAA;AAAA,IAC5B,KAAA,CAAM,cAAA,CAAe,CAAA,eACrB,CAAA;EAAY,KAAA,EAAO,QAAA;AAAA,IAClB,KAAA,CAAM,sBAAA,CAAuB,CAAA,0BAE/B,CAAA,8BACC,CAAA;EAAY,MAAA,WAAiB,QAAA;AAAA,IAC5B,cAAA,CAAe,CAAA,cACf,MAAA;;;;;;;KASG,mBAAA;EACO,WAAA;AAAA,aACR,eAAA,CAAgB,OAAA,KAE1B,gBAAA,CAAiB,OAAA,EAAS,CAAA;EAAa,KAAA;AAAA,IACpC,gBAAA,CAAiB,OAAA,EAAS,CAAA;EAA8B,IAAA;AAAA,IACvD,CAAA;;;;;;;;;;KAaO,wBAAA;EACO,WAAA;AAAA,aACR,eAAA,CAAgB,OAAA,aAChB,mBAAA,CAAoB,OAAA,EAAS,CAAA,KACpC,4BAAA,CACH,gBAAA,CAAiB,OAAA,EAAS,CAAA;EACzB,KAAA;AAAA,IAEE,YAAA,CAAa,UAAA;EAAa,KAAA,EAAO,KAAA;AAAA,GAAS,CAAA;AAAA,KAIzC,aAAA,OAAoB,IAAA,YAAgB,QAAQ;;AAzFT;AAAA;;;;;;;KAoG5B,qBAAA,WAAgC,aAAA,IAC3C,4BAAA,CAA6B,sBAAA,CAAuB,UAAA,CAAW,CAAA;;;;;AA/PhE;;;;;;;;;;;;;AAIS;AAGT;;;;;;;;;;AAEW;AACT;;;;;;;iBCkCc,QAAA,WAAmB,QAAA,CAAA,CAAU,MAAA,EAAQ,CAAA,GAAI,cAAA,CAAe,CAAA;;;;;;;;;;;;;;;;;;;;ADT/D;AAAA;;;;;;;;;;;;;;iBCqDO,UAAA,kBAAA,CACf,KAAA,UACA,IAAA,EAAM,CAAA,EACN,OAAA,GAAU,UAAA,CAAW,eAAA;EAAA;;;;;;;;;;;;;;AD3BK;AAAA;;;;;;;;AAOnB;AAAA;;;;;;;;;;;;;;;;AAO+C;AAAA;iBCyDvC,WAAA,kBAAA,CACf,KAAA,UACA,IAAA,EAAM,CAAA,EACN,OAAA,GAAU,UAAA,CAAW,mBAAA;EAAA;2BAAD,iBAAA,CAAA,eAAA;EAAA;;;;;;;;;;;;;;;ADrCuB;AAAA;;;;;;;;;;;;;;;;;;;;;AAmBZ;AAAA;;;;;;;;;AASN;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCgGV,UAAA,6BAAuC,QAAA,CAAA,CACtD,KAAA,UACA,IAAA,EAAM,CAAA,EACN,MAAA,EAAQ,CAAA,EACR,OAAA,GAAU,UAAA,CAAW,YAAA;EACjB,KAAA;EAAe,IAAA,EAAM,CAAA;EAAG,MAAA;EAAgB,KAAA,EAAO,CAAA;AAAA;AAAA,iBACpC,UAAA,6BAAuC,QAAA,GAAA,CACtD,KAAA,UACA,IAAA,EAAM,CAAA,EACN,MAAA,EAAQ,CAAA,EACR,OAAA,GAAU,UAAA,CAAW,YAAA;EACjB,KAAA;EAAe,IAAA,EAAM,CAAA;EAAG,MAAA;EAAgB,MAAA,EAAQ,CAAA;AAAA;;;ADvEY;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBC+IjD,YAAA,6BAAyC,QAAA,GAAA,CACxD,KAAA,UACA,IAAA,EAAM,CAAA,EACN,MAAA,EAAQ,CAAA,EACR,OAAA,GAAU,UAAA,CAAW,cAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AD9FhB;AAaN;;;;iBC8HgB,YAAA,kBAAA,CACf,KAAA,UACA,IAAA,EAAM,CAAA,EACN,OAAA,GAAU,UAAA,CAAW,cAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADzHyB;AAE7C;;;;AAE+C;AAWjD;;;;;;;;;;;;;iBC4JgB,YAAA,sCAAA,CACf,KAAA,UACA,IAAA,EAAM,CAAA,EACN,OAAA,EAAS,CAAA,EACT,OAAA,GAAU,UAAA,CAAW,cAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;AAlXmD;AA4CzE;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuXgB,YAAA,kBAAA,CACf,KAAA,UACA,IAAA,EAAM,CAAA,EACN,OAAA,GAAU,UAAA,CAAW,oBAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAjPtB;;;;;;;;;;;;;;;;;;;iBAoSgB,UAAA,kBAAA,CACf,KAAA,UACA,IAAA,EAAM,CAAA,EACN,OAAA,GAAU,UAAA,CAAW,oBAAA;EAAA;;;;;;;;;;AAlS+B;AACrD;;;;;cAoTa,aAAA,EAAe,UAAU,CAAC,gBAAA;;;;;cAiB1B,eAAA,EAAiB,UAAU,CAAC,gBAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/api.ts","../src/widgets.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -134,6 +134,56 @@ function listWidget(label, name, fields, options) {
134
134
  };
135
135
  }
136
136
  /**
137
+ * Creates a Markdown widget configuration with the given label and name, and
138
+ * optional additional options.
139
+ *
140
+ * **DecapCMS Configuration (TypeScript)**
141
+ *
142
+ * ```typescript
143
+ * markdownWidget("Biography", "biography")
144
+ * ```
145
+ *
146
+ * **DecapCMS Configuration (YAML)**
147
+ *
148
+ * ```yaml
149
+ * - label: Biography
150
+ * name: biography
151
+ * widget: richtext
152
+ * ```
153
+ *
154
+ * **Data Store YAML**
155
+ *
156
+ * ```yaml
157
+ * biography: |-
158
+ * Hello, world. I was born in the year 2000.
159
+ * ```
160
+ *
161
+ * There are pre-configured constants available for use with the `options`
162
+ * parameter:
163
+ *
164
+ * - INLINE_MARKDOWN
165
+ * - RICH_MARKDOWN
166
+ *
167
+ * For example, to use the `RICH_MARKDOWN` configuration, you can do the following:
168
+ *
169
+ * ```typescript
170
+ * markdownWidget("Biography", "biography", RICH_MARKDOWN)
171
+ * ```
172
+ *
173
+ * @see INLINE_MARKDOWN
174
+ * @see RICH_MARKDOWN
175
+ *
176
+ * @link https://decapcms.org/docs/widgets/#Richtext%20(Beta)
177
+ */
178
+ function markdownWidget(label, name, options) {
179
+ return {
180
+ label,
181
+ name,
182
+ widget: "richtext",
183
+ ...options ?? {}
184
+ };
185
+ }
186
+ /**
137
187
  * Creates an Object widget configuration with the given label, name, fields, and
138
188
  * optional additional options.
139
189
  *
@@ -414,5 +464,5 @@ const INLINE_MARKDOWN = {
414
464
  };
415
465
 
416
466
  //#endregion
417
- export { INLINE_MARKDOWN, RICH_MARKDOWN, boolWidget, imageWidget, listWidget, numberWidget, objectWidget, optional, selectWidget, stringWidget, textWidget };
467
+ export { INLINE_MARKDOWN, RICH_MARKDOWN, boolWidget, imageWidget, listWidget, markdownWidget, numberWidget, objectWidget, optional, selectWidget, stringWidget, textWidget };
418
468
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/widgets.ts"],"sourcesContent":["import type {\n\tCmsField,\n\tCmsFieldBoolean,\n\tCmsFieldFileOrImage,\n\tCmsFieldList,\n\tCmsFieldMarkdown,\n\tCmsFieldNumber,\n\tCmsFieldObject,\n\tCmsFieldSelect,\n\tCmsFieldStringOrText,\n} from 'decap-cms-core';\n\nimport type { OptionalWidget, WidgetOpts } from './api.js';\n\n// Widget Modifiers\n\n/**\n * Marks a widget field as optional, allowing it to be left empty in DecapCMS.\n * This modifier can be applied to any widget type to make it non-required.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * optional(stringWidget(\"Middle Name\", \"middleName\"))\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Middle Name\n * name: middleName\n * widget: string\n * required: false\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * middleName: # Can be left empty\n * ```\n *\n * The `optional` modifier can be used with all widget types including complex ones:\n *\n * ```typescript\n * optional(objectWidget(\"Metadata\", \"metadata\", [stringWidget(\"Author\", \"author\")]))\n * optional(listWidget(\"Tags\", \"tags\", stringWidget(\"Tag\", \"value\")))\n * ```\n *\n * @link https://decapcms.org/docs/widgets/#common-widget-options\n */\nexport function optional<T extends CmsField>(widget: T): OptionalWidget<T> {\n\treturn {\n\t\t...widget,\n\t\trequired: false as const,\n\t\t__optional: true as const,\n\t};\n}\n\n// Primitive Widgets\n\n/**\n * Creates a Boolean widget configuration with the given label and name, and\n * optional additional options.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * boolWidget(\"Published\", \"published\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Published\n * name: published\n * widget: boolean\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * published: true\n * ```\n *\n * The boolean widget creates a checkbox input in the editor. This can be made\n * optional using the `optional` modifier:\n *\n * ```typescript\n * optional(boolWidget(\"Draft\", \"isDraft\"))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#boolean\n */\nexport function boolWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldBoolean>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'boolean',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates an Image widget configuration with the given label and name, and\n * optional additional options.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * imageWidget(\"Featured Image\", \"featuredImage\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Featured Image\n * name: featuredImage\n * widget: image\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * featuredImage: /images/hero.jpg\n * ```\n *\n * The image widget provides file upload functionality with image preview\n * capabilities. It can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(imageWidget(\"Avatar\", \"avatar\"))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#image\n */\nexport function imageWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldFileOrImage>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'image',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates a List widget configuration with the given label, name, field(s), and\n * optional additional options.\n *\n * The `listWidget` function accepts either a single field (which gets expanded\n * for object types) or an array of fields. When passed an object widget, its\n * fields are automatically extracted and expanded.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * Single field example:\n *\n * ```typescript\n * listWidget(\"Tags\", \"tags\", stringWidget(\"Tag\", \"value\"))\n * ```\n *\n * Multiple fields example:\n *\n * ```typescript\n * listWidget(\"Authors\", \"authors\", [\n * stringWidget(\"Name\", \"name\"),\n * imageWidget(\"Avatar\", \"avatar\"),\n * ])\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * Single field:\n *\n * ```yaml\n * - label: Tags\n * name: tags\n * widget: list\n * field:\n * label: Tag\n * name: value\n * widget: string\n * ```\n *\n * Multiple fields:\n *\n * ```yaml\n * - label: Authors\n * name: authors\n * widget: list\n * fields:\n * - label: Name\n * name: name\n * widget: string\n * - label: Avatar\n * name: avatar\n * widget: image\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * tags:\n * - value: React\n * - value: TypeScript\n *\n * authors:\n * - name: Jane Doe\n * avatar: /images/jane.jpg\n * - name: John Smith\n * avatar: /images/john.jpg\n * ```\n *\n * The list widget can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(listWidget(\"Tags\", \"tags\", stringWidget(\"Tag\", \"value\")))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#list\n */\nexport function listWidget<T extends string, F extends CmsField>(\n\tlabel: string,\n\tname: T,\n\tfields: F,\n\toptions?: WidgetOpts<CmsFieldList>,\n): { label: string; name: T; widget: 'list'; field: F };\nexport function listWidget<T extends string, F extends CmsField[]>(\n\tlabel: string,\n\tname: T,\n\tfields: F,\n\toptions?: WidgetOpts<CmsFieldList>,\n): { label: string; name: T; widget: 'list'; fields: F };\nexport function listWidget<T extends string, F extends CmsField | CmsField[]>(\n\tlabel: string,\n\tname: T,\n\tfields: F,\n\toptions?: WidgetOpts<CmsFieldList>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'list',\n\t\t...(options ?? {}),\n\t\t...(Array.isArray(fields)\n\t\t\t? { fields }\n\t\t\t: fields.widget === 'object'\n\t\t\t\t? { fields: (fields as CmsFieldObject).fields }\n\t\t\t\t: { field: fields }),\n\t} as const;\n}\n\n/**\n * Creates an Object widget configuration with the given label, name, fields, and\n * optional additional options.\n *\n * The object widget groups multiple fields together as a nested object in the\n * data store. This is useful for creating structured data with related properties.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * objectWidget(\"Author\", \"author\", [\n * stringWidget(\"Name\", \"name\"),\n * stringWidget(\"Email\", \"email\"),\n * ])\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Author\n * name: author\n * widget: object\n * fields:\n * - label: Name\n * name: name\n * widget: string\n * - label: Email\n * name: email\n * widget: string\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * author:\n * name: Jane Doe\n * email: jane@example.com\n * ```\n *\n * Objects can be nested within lists or other objects to create complex data\n * structures. They can also be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(objectWidget(\"Metadata\", \"metadata\", [\n * stringWidget(\"SEO Title\", \"seoTitle\"),\n * textWidget(\"Description\", \"description\"),\n * ]))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#object\n */\nexport function objectWidget<T extends string, F extends CmsField[]>(\n\tlabel: string,\n\tname: T,\n\tfields: F,\n\toptions?: WidgetOpts<CmsFieldObject>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'object',\n\t\t...(options ?? {}),\n\t\tfields,\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates a Number widget configuration with the given label and name, and\n * optional additional options.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * numberWidget(\"Priority\", \"priority\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Priority\n * name: priority\n * widget: number\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * priority: 1\n * ```\n *\n * The number widget provides numeric input with optional min, max, and step\n * constraints. It can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(numberWidget(\"Views\", \"views\"))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#number\n */\nexport function numberWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldNumber>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'number',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates a Select widget configuration with the given label, name, choices, and\n * optional additional options.\n *\n * The select widget creates a dropdown menu with predefined options. The `choices`\n * array becomes the available options in the YAML configuration.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * selectWidget(\"Status\", \"status\", [\"draft\", \"published\", \"archived\"] as const)\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Status\n * name: status\n * widget: select\n * options:\n * - draft\n * - published\n * - archived\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * status: published\n * ```\n *\n * The select widget can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(selectWidget(\"Category\", \"category\", [\"tech\", \"lifestyle\", \"business\"] as const))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#select\n */\nexport function selectWidget<T extends string, O extends string[]>(\n\tlabel: string,\n\tname: T,\n\tchoices: O,\n\toptions?: WidgetOpts<CmsFieldSelect>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'select',\n\t\t...(options ?? {}),\n\t\toptions: choices ?? [],\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates a String widget configuration with the given label and name, and\n * optional additional options.\n *\n * The string widget provides a single-line text input field for short text content.\n * Unlike the text widget which provides multi-line input, the string widget is\n * designed for concise, single-line values.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * stringWidget(\"Title\", \"title\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Title\n * name: title\n * widget: string\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * title: Welcome to My Blog\n * ```\n *\n * The string widget can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(stringWidget(\"Slug\", \"slug\"))\n * ```\n *\n * @see optional\n * @see textWidget\n * @link https://decapcms.org/docs/widgets/#string\n */\nexport function stringWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldStringOrText>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'string',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates a Text widget configuration with the given label and name, and\n * optional additional options.\n *\n * The text widget provides a multi-line text input field for longer text content.\n * Unlike the string widget which provides single-line input, the text widget is\n * designed for paragraphs and multi-line content.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * textWidget(\"Description\", \"description\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Description\n * name: description\n * widget: text\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * description: |-\n * This is a longer description that spans\n * multiple lines in the data store.\n * ```\n *\n * The text widget can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(textWidget(\"Notes\", \"notes\"))\n * ```\n *\n * @see optional\n * @see stringWidget\n * @see markdownWidget\n * @link https://decapcms.org/docs/widgets/#text\n */\nexport function textWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldStringOrText>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'text',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n// Reusable Widget Configurations\n\n/**\n * Stripped down Markdown widget configuration that does the following:\n *\n * - Allows bold, italic, lists (bullet + numbered), quotes\n * - No images or code block components\n * - Rich Text preview only\n */\nexport const RICH_MARKDOWN: WidgetOpts<CmsFieldMarkdown> = {\n\tbuttons: [\n\t\t'bold',\n\t\t'bulleted-list',\n\t\t'italic',\n\t\t'link',\n\t\t'numbered-list',\n\t\t'quote',\n\t],\n\teditor_components: [],\n\tmodes: ['rich_text'],\n};\n\n/**\n * Stripped down Markdown Widget configuration that allows only inline\n * elements (e.g., no lists, quotes, or headings) and rich text preview only.\n */\nexport const INLINE_MARKDOWN: WidgetOpts<CmsFieldMarkdown> = {\n\tbuttons: ['bold', 'italic', 'link'],\n\teditor_components: [],\n\tmodes: ['rich_text'],\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA,SAAgB,SAA6B,QAA8B;CAC1E,OAAO;EACN,GAAG;EACH,UAAU;EACV,YAAY;CACb;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAgB,WACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAgB,YACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;AA2FA,SAAgB,WACf,OACA,MACA,QACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;EAChB,GAAI,MAAM,QAAQ,MAAM,IACrB,EAAE,OAAO,IACT,OAAO,WAAW,WACjB,EAAE,QAAS,OAA0B,OAAO,IAC5C,EAAE,OAAO,OAAO;CACrB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,SAAgB,aACf,OACA,MACA,QACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;EAChB;CACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAgB,aACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,SAAgB,aACf,OACA,MACA,SACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;EAChB,SAAS,WAAW,CAAC;CACtB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,SAAgB,aACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,SAAgB,WACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;;;;;;;;AAWA,MAAa,gBAA8C;CAC1D,SAAS;EACR;EACA;EACA;EACA;EACA;EACA;CACD;CACA,mBAAmB,CAAC;CACpB,OAAO,CAAC,WAAW;AACpB;;;;;AAMA,MAAa,kBAAgD;CAC5D,SAAS;EAAC;EAAQ;EAAU;CAAM;CAClC,mBAAmB,CAAC;CACpB,OAAO,CAAC,WAAW;AACpB"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/widgets.ts"],"sourcesContent":["import type {\n\tCmsField,\n\tCmsFieldBoolean,\n\tCmsFieldFileOrImage,\n\tCmsFieldList,\n\tCmsFieldMarkdown,\n\tCmsFieldNumber,\n\tCmsFieldObject,\n\tCmsFieldSelect,\n\tCmsFieldStringOrText,\n} from 'decap-cms-core';\n\nimport type { OptionalWidget, WidgetOpts } from './api.js';\n\n// Widget Modifiers\n\n/**\n * Marks a widget field as optional, allowing it to be left empty in DecapCMS.\n * This modifier can be applied to any widget type to make it non-required.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * optional(stringWidget(\"Middle Name\", \"middleName\"))\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Middle Name\n * name: middleName\n * widget: string\n * required: false\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * middleName: # Can be left empty\n * ```\n *\n * The `optional` modifier can be used with all widget types including complex ones:\n *\n * ```typescript\n * optional(objectWidget(\"Metadata\", \"metadata\", [stringWidget(\"Author\", \"author\")]))\n * optional(listWidget(\"Tags\", \"tags\", stringWidget(\"Tag\", \"value\")))\n * ```\n *\n * @link https://decapcms.org/docs/widgets/#common-widget-options\n */\nexport function optional<T extends CmsField>(widget: T): OptionalWidget<T> {\n\treturn {\n\t\t...widget,\n\t\trequired: false as const,\n\t\t__optional: true as const,\n\t};\n}\n\n// Primitive Widgets\n\n/**\n * Creates a Boolean widget configuration with the given label and name, and\n * optional additional options.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * boolWidget(\"Published\", \"published\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Published\n * name: published\n * widget: boolean\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * published: true\n * ```\n *\n * The boolean widget creates a checkbox input in the editor. This can be made\n * optional using the `optional` modifier:\n *\n * ```typescript\n * optional(boolWidget(\"Draft\", \"isDraft\"))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#boolean\n */\nexport function boolWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldBoolean>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'boolean',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates an Image widget configuration with the given label and name, and\n * optional additional options.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * imageWidget(\"Featured Image\", \"featuredImage\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Featured Image\n * name: featuredImage\n * widget: image\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * featuredImage: /images/hero.jpg\n * ```\n *\n * The image widget provides file upload functionality with image preview\n * capabilities. It can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(imageWidget(\"Avatar\", \"avatar\"))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#image\n */\nexport function imageWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldFileOrImage>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'image',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates a List widget configuration with the given label, name, field(s), and\n * optional additional options.\n *\n * The `listWidget` function accepts either a single field (which gets expanded\n * for object types) or an array of fields. When passed an object widget, its\n * fields are automatically extracted and expanded.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * Single field example:\n *\n * ```typescript\n * listWidget(\"Tags\", \"tags\", stringWidget(\"Tag\", \"value\"))\n * ```\n *\n * Multiple fields example:\n *\n * ```typescript\n * listWidget(\"Authors\", \"authors\", [\n * stringWidget(\"Name\", \"name\"),\n * imageWidget(\"Avatar\", \"avatar\"),\n * ])\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * Single field:\n *\n * ```yaml\n * - label: Tags\n * name: tags\n * widget: list\n * field:\n * label: Tag\n * name: value\n * widget: string\n * ```\n *\n * Multiple fields:\n *\n * ```yaml\n * - label: Authors\n * name: authors\n * widget: list\n * fields:\n * - label: Name\n * name: name\n * widget: string\n * - label: Avatar\n * name: avatar\n * widget: image\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * tags:\n * - value: React\n * - value: TypeScript\n *\n * authors:\n * - name: Jane Doe\n * avatar: /images/jane.jpg\n * - name: John Smith\n * avatar: /images/john.jpg\n * ```\n *\n * The list widget can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(listWidget(\"Tags\", \"tags\", stringWidget(\"Tag\", \"value\")))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#list\n */\nexport function listWidget<T extends string, F extends CmsField>(\n\tlabel: string,\n\tname: T,\n\tfields: F,\n\toptions?: WidgetOpts<CmsFieldList>,\n): { label: string; name: T; widget: 'list'; field: F };\nexport function listWidget<T extends string, F extends CmsField[]>(\n\tlabel: string,\n\tname: T,\n\tfields: F,\n\toptions?: WidgetOpts<CmsFieldList>,\n): { label: string; name: T; widget: 'list'; fields: F };\nexport function listWidget<T extends string, F extends CmsField | CmsField[]>(\n\tlabel: string,\n\tname: T,\n\tfields: F,\n\toptions?: WidgetOpts<CmsFieldList>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'list',\n\t\t...(options ?? {}),\n\t\t...(Array.isArray(fields)\n\t\t\t? { fields }\n\t\t\t: fields.widget === 'object'\n\t\t\t\t? { fields: (fields as CmsFieldObject).fields }\n\t\t\t\t: { field: fields }),\n\t} as const;\n}\n\n/**\n * Creates a Markdown widget configuration with the given label and name, and\n * optional additional options.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * markdownWidget(\"Biography\", \"biography\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Biography\n * name: biography\n * widget: richtext\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * biography: |-\n * Hello, world. I was born in the year 2000.\n * ```\n *\n * There are pre-configured constants available for use with the `options`\n * parameter:\n *\n * - INLINE_MARKDOWN\n * - RICH_MARKDOWN\n *\n * For example, to use the `RICH_MARKDOWN` configuration, you can do the following:\n *\n * ```typescript\n * markdownWidget(\"Biography\", \"biography\", RICH_MARKDOWN)\n * ```\n *\n * @see INLINE_MARKDOWN\n * @see RICH_MARKDOWN\n *\n * @link https://decapcms.org/docs/widgets/#Richtext%20(Beta)\n */\nexport function markdownWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldMarkdown>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'richtext' as 'string',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates an Object widget configuration with the given label, name, fields, and\n * optional additional options.\n *\n * The object widget groups multiple fields together as a nested object in the\n * data store. This is useful for creating structured data with related properties.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * objectWidget(\"Author\", \"author\", [\n * stringWidget(\"Name\", \"name\"),\n * stringWidget(\"Email\", \"email\"),\n * ])\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Author\n * name: author\n * widget: object\n * fields:\n * - label: Name\n * name: name\n * widget: string\n * - label: Email\n * name: email\n * widget: string\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * author:\n * name: Jane Doe\n * email: jane@example.com\n * ```\n *\n * Objects can be nested within lists or other objects to create complex data\n * structures. They can also be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(objectWidget(\"Metadata\", \"metadata\", [\n * stringWidget(\"SEO Title\", \"seoTitle\"),\n * textWidget(\"Description\", \"description\"),\n * ]))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#object\n */\nexport function objectWidget<T extends string, F extends CmsField[]>(\n\tlabel: string,\n\tname: T,\n\tfields: F,\n\toptions?: WidgetOpts<CmsFieldObject>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'object',\n\t\t...(options ?? {}),\n\t\tfields,\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates a Number widget configuration with the given label and name, and\n * optional additional options.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * numberWidget(\"Priority\", \"priority\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Priority\n * name: priority\n * widget: number\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * priority: 1\n * ```\n *\n * The number widget provides numeric input with optional min, max, and step\n * constraints. It can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(numberWidget(\"Views\", \"views\"))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#number\n */\nexport function numberWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldNumber>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'number',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates a Select widget configuration with the given label, name, choices, and\n * optional additional options.\n *\n * The select widget creates a dropdown menu with predefined options. The `choices`\n * array becomes the available options in the YAML configuration.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * selectWidget(\"Status\", \"status\", [\"draft\", \"published\", \"archived\"] as const)\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Status\n * name: status\n * widget: select\n * options:\n * - draft\n * - published\n * - archived\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * status: published\n * ```\n *\n * The select widget can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(selectWidget(\"Category\", \"category\", [\"tech\", \"lifestyle\", \"business\"] as const))\n * ```\n *\n * @see optional\n * @link https://decapcms.org/docs/widgets/#select\n */\nexport function selectWidget<T extends string, O extends string[]>(\n\tlabel: string,\n\tname: T,\n\tchoices: O,\n\toptions?: WidgetOpts<CmsFieldSelect>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'select',\n\t\t...(options ?? {}),\n\t\toptions: choices ?? [],\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates a String widget configuration with the given label and name, and\n * optional additional options.\n *\n * The string widget provides a single-line text input field for short text content.\n * Unlike the text widget which provides multi-line input, the string widget is\n * designed for concise, single-line values.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * stringWidget(\"Title\", \"title\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Title\n * name: title\n * widget: string\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * title: Welcome to My Blog\n * ```\n *\n * The string widget can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(stringWidget(\"Slug\", \"slug\"))\n * ```\n *\n * @see optional\n * @see textWidget\n * @link https://decapcms.org/docs/widgets/#string\n */\nexport function stringWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldStringOrText>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'string',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n/**\n * Creates a Text widget configuration with the given label and name, and\n * optional additional options.\n *\n * The text widget provides a multi-line text input field for longer text content.\n * Unlike the string widget which provides single-line input, the text widget is\n * designed for paragraphs and multi-line content.\n *\n * **DecapCMS Configuration (TypeScript)**\n *\n * ```typescript\n * textWidget(\"Description\", \"description\")\n * ```\n *\n * **DecapCMS Configuration (YAML)**\n *\n * ```yaml\n * - label: Description\n * name: description\n * widget: text\n * ```\n *\n * **Data Store YAML**\n *\n * ```yaml\n * description: |-\n * This is a longer description that spans\n * multiple lines in the data store.\n * ```\n *\n * The text widget can be made optional using the `optional` modifier:\n *\n * ```typescript\n * optional(textWidget(\"Notes\", \"notes\"))\n * ```\n *\n * @see optional\n * @see stringWidget\n * @see markdownWidget\n * @link https://decapcms.org/docs/widgets/#text\n */\nexport function textWidget<T extends string>(\n\tlabel: string,\n\tname: T,\n\toptions?: WidgetOpts<CmsFieldStringOrText>,\n) {\n\treturn {\n\t\tlabel,\n\t\tname,\n\t\twidget: 'text',\n\t\t...(options ?? {}),\n\t} as const satisfies CmsField;\n}\n\n// Reusable Widget Configurations\n\n/**\n * Stripped down Markdown widget configuration that does the following:\n *\n * - Allows bold, italic, lists (bullet + numbered), quotes\n * - No images or code block components\n * - Rich Text preview only\n */\nexport const RICH_MARKDOWN: WidgetOpts<CmsFieldMarkdown> = {\n\tbuttons: [\n\t\t'bold',\n\t\t'bulleted-list',\n\t\t'italic',\n\t\t'link',\n\t\t'numbered-list',\n\t\t'quote',\n\t],\n\teditor_components: [],\n\tmodes: ['rich_text'],\n};\n\n/**\n * Stripped down Markdown Widget configuration that allows only inline\n * elements (e.g., no lists, quotes, or headings) and rich text preview only.\n */\nexport const INLINE_MARKDOWN: WidgetOpts<CmsFieldMarkdown> = {\n\tbuttons: ['bold', 'italic', 'link'],\n\teditor_components: [],\n\tmodes: ['rich_text'],\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA,SAAgB,SAA6B,QAA8B;CAC1E,OAAO;EACN,GAAG;EACH,UAAU;EACV,YAAY;CACb;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,SAAgB,WACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAgB,YACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;AA2FA,SAAgB,WACf,OACA,MACA,QACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;EAChB,GAAI,MAAM,QAAQ,MAAM,IACrB,EAAE,OAAO,IACT,OAAO,WAAW,WACjB,EAAE,QAAS,OAA0B,OAAO,IAC5C,EAAE,OAAO,OAAO;CACrB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,SAAgB,eACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDA,SAAgB,aACf,OACA,MACA,QACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;EAChB;CACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAgB,aACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,SAAgB,aACf,OACA,MACA,SACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;EAChB,SAAS,WAAW,CAAC;CACtB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,SAAgB,aACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,SAAgB,WACf,OACA,MACA,SACC;CACD,OAAO;EACN;EACA;EACA,QAAQ;EACR,GAAI,WAAW,CAAC;CACjB;AACD;;;;;;;;AAWA,MAAa,gBAA8C;CAC1D,SAAS;EACR;EACA;EACA;EACA;EACA;EACA;CACD;CACA,mBAAmB,CAAC;CACpB,OAAO,CAAC,WAAW;AACpB;;;;;AAMA,MAAa,kBAAgD;CAC5D,SAAS;EAAC;EAAQ;EAAU;CAAM;CAClC,mBAAmB,CAAC;CACpB,OAAO,CAAC,WAAW;AACpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allejo/decap-extras",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "A TypeScript utility library for Decap CMS with utility types to derive types from Decap CMS configuration files.",
5
5
  "keywords": [
6
6
  "decapcms"