import HTMLElement from '../html-element/HTMLElement.js';
import * as PropertySymbol from '../../PropertySymbol.js';
import ValidityState from '../../validity-state/ValidityState.js';
/**
* HTMLObjectElement
*
* @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement
*/
export default class HTMLObjectElement extends HTMLElement {
[PropertySymbol.formNode] = null;
[PropertySymbol.validationMessage] = '';
[PropertySymbol.validity] = new ValidityState(this);
/**
* Returns the content document.
*
* @returns Document
*/
get contentDocument() {
return null;
}
/**
* Returns the content window.
*
* @returns Window
*/
get contentWindow() {
return null;
}
/**
* Returns source.
*
* @returns Source.
*/
get data() {
if (!this.hasAttribute('data')) {
return '';
}
try {
return new URL(this.getAttribute('data'), this[PropertySymbol.ownerDocument].location.href)
.href;
}
catch (e) {
return this.getAttribute('data');
}
}
/**
* Sets source.
*
* @param data Source.
*/
set data(data) {
this.setAttribute('data', data);
}
/**
* Returns the parent form element.
*
* @returns Form.
*/
get form() {
if (this[PropertySymbol.formNode]) {
return this[PropertySymbol.formNode];
}
const id = this[PropertySymbol.attributes][PropertySymbol.namedItems].get('form')?.[PropertySymbol.value];
if (!id || !this[PropertySymbol.isConnected]) {
return null;
}
return this[PropertySymbol.ownerDocument].getElementById(id);
}
/**
* Returns height.
*
* @returns Height.
*/
get height() {
return this.getAttribute('height') || '';
}
/**
* Sets height.
*
* @param height Height.
*/
set height(height) {
this.setAttribute('height', height);
}
/**
* Returns width.
*
* @returns Width.
*/
get width() {
return this.getAttribute('width') || '';
}
/**
* Sets width.
*
* @param width Width.
*/
set width(width) {
this.setAttribute('width', width);
}
/**
* Returns name.
*
* @returns Name.
*/
get name() {
return this.getAttribute('name') || '';
}
/**
* Sets name.
*
* @param name Name.
*/
set name(name) {
this.setAttribute('name', name);
}
/**
* Returns type.
*
* @returns Type.
*/
get type() {
return this.getAttribute('type') || '';
}
/**
* Sets type.
*
* @param type Type.
*/
set type(type) {
this.setAttribute('type', type);
}
/**
* Returns validation message.
*
* @returns Validation message.
*/
get validationMessage() {
return this[PropertySymbol.validationMessage];
}
/**
* Returns validity.
*
* @returns Validity.
*/
get validity() {
return this[PropertySymbol.validity];
}
/**
* Returns "true" if it will validate.
*
* @returns "true" if it will validate.
*/
get willValidate() {
return false;
}
/**
* Checks validity.
*
* @returns "true" if the field is valid.
*/
checkValidity() {
return true;
}
/**
* Reports validity.
*
* @returns Validity.
*/
reportValidity() {
return this.checkValidity();
}
/**
* Sets validation message.
*
* @param message Message.
*/
setCustomValidity(message) {
this[PropertySymbol.validationMessage] = String(message);
}
}
//# sourceMappingURL=HTMLObjectElement.js.map