//ラジオボタンの場合のJS
(function (wp) {
	var el = wp.element.createElement;
	var registerPlugin = wp.plugins.registerPlugin;
	var PluginDocumentSettingPanel = wp.editor.PluginDocumentSettingPanel || wp.editPost.PluginDocumentSettingPanel;
	var useSelect = wp.data.useSelect;
 	var useDispatch = wp.data.useDispatch;
	var RadioControl = wp.components.RadioControl; // ラジオボタン用
	
	//文字列
	var T = HaupLocalizeTextPostMdate;

	var HaupMetaPanel = function () {
		// 1. メタデータを取得（コンポーネントのトップレベルで！）
		var meta = useSelect(function (select) {
			// 現在のメタデータを取得
			var currentMeta = select('core/editor').getEditedPostAttribute('meta') || {};
			
			// update_mode が空（未設定）の場合の処理
			if ( ! currentMeta['update_mode'] ) {
				// PHPから渡された 1, 2, 3 を文字列に変換するマッピング表
				var defaultMapping = {
					'1': 'normal',
					'2': 'postonly',
					'3': 'delete'
				};
				
				// T.default_mode の値に基づいて初期値をセット（該当がなければ 'delete'）
				// ここで値をセットすることで、RadioControl にチェックが入る
				currentMeta['update_mode'] = defaultMapping[T.default_mode] || 'delete';
			}
			
			return currentMeta;
		}, []);

		// 2. 公開日を取得（ここもトップレベルで！）
		var postDate = useSelect(function (select) {
			return select('core/editor').getEditedPostAttribute('date');
		}, []);

		var { editPost } = useDispatch('core/editor');

		if (meta['update_mode'] === undefined) {
			return null; 
		}

		return el(
			PluginDocumentSettingPanel,
			{
				name: 'haup-editor-panel-post-moddate',
				title: T.title,
				icon: 'admin-settings',
				initialOpen: false,
			},
			el(RadioControl, {
				label: T.label,
				selected: meta['update_mode'],
				options: [
					{ label: T.normal, value: 'normal' },
					{ label: T.postonly, value: 'postonly' },
					{ label: T.delete, value: 'delete' },
				],
				onChange: function (newValue) {
					var metaUpdates = { 'update_mode': newValue };

					if (newValue === 'normal') {
						// 現在時刻
						var now = new Date();
						var formattedNow = now.getFullYear() + '-' +
							('0' + (now.getMonth() + 1)).slice(-2) + '-' +
							('0' + now.getDate()).slice(-2) + ' ' +
							('0' + now.getHours()).slice(-2) + ':' +
							('0' + now.getMinutes()).slice(-2) + ':' +
							('0' + now.getSeconds()).slice(-2);
                    
						metaUpdates['last_modified'] = formattedNow;
					} 
					else if (newValue === 'delete') {
						// ここでは既に取得済みの postDate を使うだけ
						if (postDate) {
							metaUpdates['last_modified'] = postDate.replace('T', ' ');
						}
					}

					// 更新を実行
					editPost({ meta: metaUpdates });
				}
			})
		);
	};

	registerPlugin('haup-editor-panel-post-mdate-plugin', { render: HaupMetaPanel });

})(window.wp);