All files / app/mods/media embed.ts

100% Statements 3/3
100% Branches 0/0
100% Functions 0/0
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75117x       117x                                                                                                                                 117x          
import { DateTime } from 'luxon';
import { Plugin } from '../../model/plugin';
import { Mod } from '../../model/tag';
 
export const embedPlugin: Plugin = {
  tag: 'plugin/embed',
  name: $localize`🔭️ Embed`,
  config: {
    type: 'plugin',
    version: 1,
    default: true,
    add: true,
    embeddable: true,
    generated: $localize`Generated by jasper-ui ${DateTime.now().toISO()}`,
    submit: $localize`🔭️ embed`,
    icons: [{ label: $localize`🔭️` }],
    filters: [
      { query: 'plugin/embed', label: $localize`🔭️ embed`, title: $localize`Has embedded iframe`, group: $localize`Media 🎬️` },
    ],
    description: $localize`Embed the webpage in an inline frame.`,
    advancedForm: [{
      key: 'url',
      type: 'url',
      props: {
        label: $localize`URL:`,
      },
    }, {
      key: 'width',
      type: 'number',
      props: {
        label: $localize`Width:`,
        min: 50,
      },
      validation: {
        messages: {
          min: 'Width must be at least 200px.'
        }
      }
    }, {
      key: 'height',
      type: 'number',
      props: {
        label: $localize`Height:`,
        min: 50
      },
      validation: {
        messages: {
          min: 'Height must be at least 200px.'
        }
      }
    }, {
      key: 'noResize',
      type: 'boolean',
      props: {
        label: $localize`Not Resizable:`
      }
    }],
  },
  defaults: {},
  schema: {
    optionalProperties: {
      url: { type: 'string' },
      noResize: { type: 'boolean' },
      width: { type: 'int32', nullable: true },
      height: { type: 'int32', nullable: true },
    },
  },
};
 
export const embedMod: Mod = {
  plugin: [
    embedPlugin,
  ]
};