1<?php
2
3// AUTOMATICALLY GENERATED.  DO NOT EDIT.
4// Use `composer build` to regenerate.
5
6namespace Wikimedia\IDLeDOM\Helper;
7
8trait HTMLTimeElement {
9
10	// Underscore is used to avoid conflicts with DOM-reserved names
11	// phpcs:disable PSR2.Methods.MethodDeclaration.Underscore
12	// phpcs:disable MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName
13
14	/**
15	 * Handle an attempt to get a non-existing property on this
16	 * object.  The default implementation raises an exception
17	 * but the implementor can choose a different behavior:
18	 * return null (like JavaScript), dynamically create the
19	 * property, etc.
20	 * @param string $prop the name of the property requested
21	 * @return mixed
22	 */
23	abstract protected function _getMissingProp( string $prop );
24
25	/**
26	 * Handle an attempt to set a non-existing property on this
27	 * object.  The default implementation raises an exception
28	 * but the implementor can choose a different behavior:
29	 * ignore the operation (like JavaScript), dynamically create
30	 * the property, etc.
31	 * @param string $prop the name of the property requested
32	 * @param mixed $value the value to set
33	 */
34	abstract protected function _setMissingProp( string $prop, $value ): void;
35
36	// phpcs:enable
37
38	/**
39	 * @param string $name
40	 * @return mixed
41	 */
42	public function __get( string $name ) {
43		'@phan-var \Wikimedia\IDLeDOM\HTMLTimeElement $this';
44		// @var \Wikimedia\IDLeDOM\HTMLTimeElement $this
45		switch ( $name ) {
46			case "nodeType":
47				return $this->getNodeType();
48			case "nodeName":
49				return $this->getNodeName();
50			case "baseURI":
51				return $this->getBaseURI();
52			case "isConnected":
53				return $this->getIsConnected();
54			case "ownerDocument":
55				return $this->getOwnerDocument();
56			case "parentNode":
57				return $this->getParentNode();
58			case "parentElement":
59				return $this->getParentElement();
60			case "childNodes":
61				return $this->getChildNodes();
62			case "firstChild":
63				return $this->getFirstChild();
64			case "lastChild":
65				return $this->getLastChild();
66			case "previousSibling":
67				return $this->getPreviousSibling();
68			case "nextSibling":
69				return $this->getNextSibling();
70			case "nodeValue":
71				return $this->getNodeValue();
72			case "textContent":
73				return $this->getTextContent();
74			case "innerHTML":
75				return $this->getInnerHTML();
76			case "previousElementSibling":
77				return $this->getPreviousElementSibling();
78			case "nextElementSibling":
79				return $this->getNextElementSibling();
80			case "children":
81				return $this->getChildren();
82			case "firstElementChild":
83				return $this->getFirstElementChild();
84			case "lastElementChild":
85				return $this->getLastElementChild();
86			case "childElementCount":
87				return $this->getChildElementCount();
88			case "assignedSlot":
89				return $this->getAssignedSlot();
90			case "namespaceURI":
91				return $this->getNamespaceURI();
92			case "prefix":
93				return $this->getPrefix();
94			case "localName":
95				return $this->getLocalName();
96			case "tagName":
97				return $this->getTagName();
98			case "id":
99				return $this->getId();
100			case "className":
101				return $this->getClassName();
102			case "classList":
103				return $this->getClassList();
104			case "slot":
105				return $this->getSlot();
106			case "attributes":
107				return $this->getAttributes();
108			case "shadowRoot":
109				return $this->getShadowRoot();
110			case "outerHTML":
111				return $this->getOuterHTML();
112			case "style":
113				return $this->getStyle();
114			case "contentEditable":
115				return $this->getContentEditable();
116			case "enterKeyHint":
117				return $this->getEnterKeyHint();
118			case "isContentEditable":
119				return $this->getIsContentEditable();
120			case "inputMode":
121				return $this->getInputMode();
122			case "onload":
123				return $this->getOnload();
124			case "dataset":
125				return $this->getDataset();
126			case "nonce":
127				return $this->getNonce();
128			case "tabIndex":
129				return $this->getTabIndex();
130			case "title":
131				return $this->getTitle();
132			case "lang":
133				return $this->getLang();
134			case "translate":
135				return $this->getTranslate();
136			case "dir":
137				return $this->getDir();
138			case "hidden":
139				return $this->getHidden();
140			case "accessKey":
141				return $this->getAccessKey();
142			case "accessKeyLabel":
143				return $this->getAccessKeyLabel();
144			case "draggable":
145				return $this->getDraggable();
146			case "spellcheck":
147				return $this->getSpellcheck();
148			case "autocapitalize":
149				return $this->getAutocapitalize();
150			case "innerText":
151				return $this->getInnerText();
152			case "offsetParent":
153				return $this->getOffsetParent();
154			case "offsetTop":
155				return $this->getOffsetTop();
156			case "offsetLeft":
157				return $this->getOffsetLeft();
158			case "offsetWidth":
159				return $this->getOffsetWidth();
160			case "offsetHeight":
161				return $this->getOffsetHeight();
162			case "dateTime":
163				return $this->getDateTime();
164			default:
165				break;
166		}
167		'@phan-var \Wikimedia\IDLeDOM\Helper\HTMLTimeElement $this';
168		// @var \Wikimedia\IDLeDOM\Helper\HTMLTimeElement $this
169		return $this->_getMissingProp( $name );
170	}
171
172	/**
173	 * @param string $name
174	 * @return bool
175	 */
176	public function __isset( string $name ): bool {
177		'@phan-var \Wikimedia\IDLeDOM\HTMLTimeElement $this';
178		// @var \Wikimedia\IDLeDOM\HTMLTimeElement $this
179		switch ( $name ) {
180			case "nodeType":
181				return true;
182			case "nodeName":
183				return true;
184			case "baseURI":
185				return true;
186			case "isConnected":
187				return true;
188			case "ownerDocument":
189				return $this->getOwnerDocument() !== null;
190			case "parentNode":
191				return $this->getParentNode() !== null;
192			case "parentElement":
193				return $this->getParentElement() !== null;
194			case "childNodes":
195				return true;
196			case "firstChild":
197				return $this->getFirstChild() !== null;
198			case "lastChild":
199				return $this->getLastChild() !== null;
200			case "previousSibling":
201				return $this->getPreviousSibling() !== null;
202			case "nextSibling":
203				return $this->getNextSibling() !== null;
204			case "nodeValue":
205				return $this->getNodeValue() !== null;
206			case "textContent":
207				return $this->getTextContent() !== null;
208			case "innerHTML":
209				return true;
210			case "previousElementSibling":
211				return $this->getPreviousElementSibling() !== null;
212			case "nextElementSibling":
213				return $this->getNextElementSibling() !== null;
214			case "children":
215				return true;
216			case "firstElementChild":
217				return $this->getFirstElementChild() !== null;
218			case "lastElementChild":
219				return $this->getLastElementChild() !== null;
220			case "childElementCount":
221				return true;
222			case "assignedSlot":
223				return $this->getAssignedSlot() !== null;
224			case "namespaceURI":
225				return $this->getNamespaceURI() !== null;
226			case "prefix":
227				return $this->getPrefix() !== null;
228			case "localName":
229				return true;
230			case "tagName":
231				return true;
232			case "id":
233				return true;
234			case "className":
235				return true;
236			case "classList":
237				return true;
238			case "slot":
239				return true;
240			case "attributes":
241				return true;
242			case "shadowRoot":
243				return $this->getShadowRoot() !== null;
244			case "outerHTML":
245				return true;
246			case "style":
247				return true;
248			case "contentEditable":
249				return true;
250			case "enterKeyHint":
251				return true;
252			case "isContentEditable":
253				return true;
254			case "inputMode":
255				return true;
256			case "onload":
257				return true;
258			case "dataset":
259				return true;
260			case "nonce":
261				return true;
262			case "tabIndex":
263				return true;
264			case "title":
265				return true;
266			case "lang":
267				return true;
268			case "translate":
269				return true;
270			case "dir":
271				return true;
272			case "hidden":
273				return true;
274			case "accessKey":
275				return true;
276			case "accessKeyLabel":
277				return true;
278			case "draggable":
279				return true;
280			case "spellcheck":
281				return true;
282			case "autocapitalize":
283				return true;
284			case "innerText":
285				return true;
286			case "offsetParent":
287				return $this->getOffsetParent() !== null;
288			case "offsetTop":
289				return true;
290			case "offsetLeft":
291				return true;
292			case "offsetWidth":
293				return true;
294			case "offsetHeight":
295				return true;
296			case "dateTime":
297				return true;
298			default:
299				break;
300		}
301		return false;
302	}
303
304	/**
305	 * @param string $name
306	 * @param mixed $value
307	 */
308	public function __set( string $name, $value ): void {
309		'@phan-var \Wikimedia\IDLeDOM\HTMLTimeElement $this';
310		// @var \Wikimedia\IDLeDOM\HTMLTimeElement $this
311		switch ( $name ) {
312			case "nodeValue":
313				$this->setNodeValue( $value );
314				return;
315			case "textContent":
316				$this->setTextContent( $value );
317				return;
318			case "innerHTML":
319				$this->setInnerHTML( $value );
320				return;
321			case "id":
322				$this->setId( $value );
323				return;
324			case "className":
325				$this->setClassName( $value );
326				return;
327			case "classList":
328				$this->setClassList( $value );
329				return;
330			case "slot":
331				$this->setSlot( $value );
332				return;
333			case "outerHTML":
334				$this->setOuterHTML( $value );
335				return;
336			case "style":
337				$this->setStyle( $value );
338				return;
339			case "contentEditable":
340				$this->setContentEditable( $value );
341				return;
342			case "enterKeyHint":
343				$this->setEnterKeyHint( $value );
344				return;
345			case "inputMode":
346				$this->setInputMode( $value );
347				return;
348			case "onload":
349				$this->setOnload( $value );
350				return;
351			case "nonce":
352				$this->setNonce( $value );
353				return;
354			case "tabIndex":
355				$this->setTabIndex( $value );
356				return;
357			case "title":
358				$this->setTitle( $value );
359				return;
360			case "lang":
361				$this->setLang( $value );
362				return;
363			case "translate":
364				$this->setTranslate( $value );
365				return;
366			case "dir":
367				$this->setDir( $value );
368				return;
369			case "hidden":
370				$this->setHidden( $value );
371				return;
372			case "accessKey":
373				$this->setAccessKey( $value );
374				return;
375			case "draggable":
376				$this->setDraggable( $value );
377				return;
378			case "spellcheck":
379				$this->setSpellcheck( $value );
380				return;
381			case "autocapitalize":
382				$this->setAutocapitalize( $value );
383				return;
384			case "innerText":
385				$this->setInnerText( $value );
386				return;
387			case "dateTime":
388				$this->setDateTime( $value );
389				return;
390			default:
391				break;
392		}
393		'@phan-var \Wikimedia\IDLeDOM\Helper\HTMLTimeElement $this';
394		// @var \Wikimedia\IDLeDOM\Helper\HTMLTimeElement $this
395		$this->_setMissingProp( $name, $value );
396	}
397
398	/**
399	 * @param string $name
400	 */
401	public function __unset( string $name ): void {
402		'@phan-var \Wikimedia\IDLeDOM\HTMLTimeElement $this';
403		// @var \Wikimedia\IDLeDOM\HTMLTimeElement $this
404		switch ( $name ) {
405			case "nodeType":
406				break;
407			case "nodeName":
408				break;
409			case "baseURI":
410				break;
411			case "isConnected":
412				break;
413			case "ownerDocument":
414				break;
415			case "parentNode":
416				break;
417			case "parentElement":
418				break;
419			case "childNodes":
420				break;
421			case "firstChild":
422				break;
423			case "lastChild":
424				break;
425			case "previousSibling":
426				break;
427			case "nextSibling":
428				break;
429			case "nodeValue":
430				$this->setNodeValue( null );
431				return;
432			case "textContent":
433				$this->setTextContent( null );
434				return;
435			case "innerHTML":
436				break;
437			case "previousElementSibling":
438				break;
439			case "nextElementSibling":
440				break;
441			case "children":
442				break;
443			case "firstElementChild":
444				break;
445			case "lastElementChild":
446				break;
447			case "childElementCount":
448				break;
449			case "assignedSlot":
450				break;
451			case "namespaceURI":
452				break;
453			case "prefix":
454				break;
455			case "localName":
456				break;
457			case "tagName":
458				break;
459			case "id":
460				break;
461			case "className":
462				break;
463			case "classList":
464				break;
465			case "slot":
466				break;
467			case "attributes":
468				break;
469			case "shadowRoot":
470				break;
471			case "outerHTML":
472				break;
473			case "style":
474				break;
475			case "contentEditable":
476				break;
477			case "enterKeyHint":
478				break;
479			case "isContentEditable":
480				break;
481			case "inputMode":
482				break;
483			case "onload":
484				break;
485			case "dataset":
486				break;
487			case "nonce":
488				break;
489			case "tabIndex":
490				break;
491			case "title":
492				break;
493			case "lang":
494				break;
495			case "translate":
496				break;
497			case "dir":
498				break;
499			case "hidden":
500				break;
501			case "accessKey":
502				break;
503			case "accessKeyLabel":
504				break;
505			case "draggable":
506				break;
507			case "spellcheck":
508				break;
509			case "autocapitalize":
510				break;
511			case "innerText":
512				break;
513			case "offsetParent":
514				break;
515			case "offsetTop":
516				break;
517			case "offsetLeft":
518				break;
519			case "offsetWidth":
520				break;
521			case "offsetHeight":
522				break;
523			case "dateTime":
524				break;
525			default:
526				return;
527		}
528		$trace = debug_backtrace();
529		while (
530			count( $trace ) > 0 &&
531			$trace[0]['function'] !== "__unset"
532		) {
533			array_shift( $trace );
534		}
535		trigger_error(
536			'Undefined property' .
537			' via ' . ( $trace[0]['function'] ?? '' ) . '(): ' . $name .
538			' in ' . ( $trace[0]['file'] ?? '' ) .
539			' on line ' . ( $trace[0]['line'] ?? '' ),
540			E_USER_NOTICE
541		);
542	}
543
544	/**
545	 * @return string
546	 */
547	public function getDateTime(): string {
548		'@phan-var \Wikimedia\IDLeDOM\Element $this';
549		// @var \Wikimedia\IDLeDOM\Element $this
550		return $this->getAttribute( 'datetime' ) ?? '';
551	}
552
553	/**
554	 * @param string $val
555	 */
556	public function setDateTime( string $val ): void {
557		'@phan-var \Wikimedia\IDLeDOM\Element $this';
558		// @var \Wikimedia\IDLeDOM\Element $this
559		$this->setAttribute( 'datetime', $val );
560	}
561
562}
563