{"id":20388,"date":"2026-09-17T15:04:59","date_gmt":"2026-09-17T07:04:59","guid":{"rendered":"https:\/\/web.edcity.hk\/?page_id=20388"},"modified":"2026-10-29T18:17:26","modified_gmt":"2026-10-29T10:17:26","slug":"exhibition","status":"publish","type":"page","link":"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/","title":{"rendered":"Exhibition"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"20388\" class=\"elementor elementor-20388\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-881050b e-flex e-con-boxed e-con e-parent\" data-id=\"881050b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eafed69 e-con e-atomic-element e-flexbox-base e-eafed69-d748129\" data-id=\"eafed69\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"eafed69\" data-e-type=\"e-flexbox\" data-id=\"eafed69\">\n\t\t\t\t<div class=\"elementor-element elementor-element-50437ff e-con e-atomic-element e-flexbox-base e-50437ff-3e48e0d\" data-id=\"50437ff\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"50437ff\" data-e-type=\"e-flexbox\" data-id=\"50437ff\">\n\t\t\t\t<div class=\"elementor-element elementor-element-77f8dc6 e-con e-atomic-element e-flexbox-base e-77f8dc6-4dcc292\" data-id=\"77f8dc6\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"77f8dc6\" data-e-type=\"e-flexbox\" data-id=\"77f8dc6\">\n\t\t\t\t\t<div class=\"e-2925fea-9b94a4a e-svg-base\" data-interaction-id=\"2925fea\" data-e-type=\"widget\" data-id=\"2925fea\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width: 100%; height: 100%; overflow: unset;\" width=\"8\" height=\"8\" viewBox=\"0 0 8 8\" fill=\"currentColor\"><circle cx=\"4\" cy=\"4\" r=\"4\" fill=\"url(#paint0_linear_55_466)\"><\/circle><defs><linearGradient id=\"paint0_linear_55_466\" x1=\"0\" y1=\"4\" x2=\"8\" y2=\"4\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#127BFF\"><\/stop><stop offset=\"0.55\" stop-color=\"#0C9A8A\"><\/stop><stop offset=\"1\" stop-color=\"#10A55A\"><\/stop><\/linearGradient><\/defs><\/svg><\/div>\t\t\t\t\t\t\t<h5 \n\t\tdata-interaction-id=\"1e0a3b2\" \n\t\tclass=\"e-1e0a3b2-9a039b5 e-heading-base\" \n\t\t \n\t\tdata-e-type=\"widget\" data-id=\"1e0a3b2\"\n\t>\n\t\n\t\t\t<a \n\t\t\thref=\"https:\/\/web.edcity.hk\/en\/aied\/home\/\" target=\"_self\"\n\t\t\tclass=\"e-heading-link-base\">\n\t\t\thome\n\t\t<\/a>\n\t\t<\/h5>\n\t\t\t\t\t\t\t<h5 \n\t\tdata-interaction-id=\"9dfdb04\" \n\t\tclass=\"e-9dfdb04-6fac799 e-heading-base\" \n\t\t \n\t\tdata-e-type=\"widget\" data-id=\"9dfdb04\"\n\t>\n\t\n\t\t\t\/\n\t\t<\/h5>\n\t\t\t\t\t\t\t<h5 \n\t\tdata-interaction-id=\"ebb7004\" \n\t\tclass=\"e-ebb7004-b4d581b e-heading-base\" \n\t\t \n\t\tdata-e-type=\"widget\" data-id=\"ebb7004\"\n\t>\n\t\n\t\t\texhibition\n\t\t<\/h5>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-315809c elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"315809c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\"><span id=\"aied-reg-title-green\">Exhibition<\/span><\/h1>\t\t\t\t<\/div>\n\t\t\t\t\t\n<hr class=\"e-a5a47c3-b32de7d e-divider-base\" data-interaction-id=\"a5a47c3\" id=aied-reg-divider data-e-type=\"widget\" data-id=\"a5a47c3\" \/>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3dea5f6 elementor-widget elementor-widget-text-editor\" data-id=\"3dea5f6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>EdTech solutions on show, with live demonstrations from exhibitors.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f74c19f e-con e-atomic-element e-div-block-base e-f74c19f-12f78e2\" data-id=\"f74c19f\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"f74c19f\" id=\"aied-reg-title-bg-container\" data-e-type=\"e-div-block\" data-id=\"f74c19f\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0c6a18d elementor-widget__width-inherit elementor-absolute elementor-widget elementor-widget-image\" data-id=\"0c6a18d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/campaignprodstor.blob.core.windows.net\/uploads\/2026\/09\/aied-watermark.png\" title=\"aied-watermark\" alt=\"aied-watermark\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eb448f3 e-flex e-con-boxed e-con e-parent\" data-id=\"eb448f3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2d8a567 elementor-widget elementor-widget-html\" data-id=\"2d8a567\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div\r\n\tclass=\"aied-exhibitions\"\r\n\tdata-aied-exhibitions>\r\n\t<div class=\"aied-exhibitions__toolbar\">\r\n\t\t<h2\r\n\t\t\tclass=\"aied-exhibitions__heading\"\r\n\t\t\tdata-exhibitors-heading><\/h2>\r\n\t\t<label class=\"aied-exhibitions__search\">\r\n\t\t\t<svg\r\n\t\t\t\taria-hidden=\"true\"\r\n\t\t\t\tviewBox=\"0 0 24 24\">\r\n\t\t\t\t<circle\r\n\t\t\t\t\tcx=\"11\"\r\n\t\t\t\t\tcy=\"11\"\r\n\t\t\t\t\tr=\"6.5\"><\/circle>\r\n\t\t\t\t<path d=\"m16 16 4 4\"><\/path>\r\n\t\t\t<\/svg>\r\n\t\t\t<span\r\n\t\t\t\tclass=\"aied-exhibitions__sr-only\"\r\n\t\t\t\tdata-search-label><\/span>\r\n\t\t\t<input\r\n\t\t\t\ttype=\"search\"\r\n\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\tdata-search \/>\r\n\t\t<\/label>\r\n\t<\/div>\r\n\t<div\r\n\t\tclass=\"aied-exhibitions__status\"\r\n\t\tdata-status\r\n\t\trole=\"status\"\r\n\t\taria-live=\"polite\"><\/div>\r\n\t<div\r\n\t\tclass=\"aied-exhibitions__grid\"\r\n\t\tdata-grid><\/div>\r\n\t<div\r\n\t\tclass=\"aied-exhibitions__actions\"\r\n\t\tdata-actions><\/div>\r\n\t<dialog\r\n\t\tclass=\"aied-exhibitions__dialog\"\r\n\t\tdata-dialog>\r\n\t\t<div\r\n\t\t\tclass=\"aied-exhibitions__dialog-content\"\r\n\t\t\tdata-dialog-content><\/div>\r\n\t<\/dialog>\r\n<\/div>\r\n\r\n<script>\r\n\t;(() => {\r\n\t\t'use strict'\r\n\r\n\t\tconst root = document.currentScript.parentElement.querySelector(\r\n\t\t\t'[data-aied-exhibitions]'\r\n\t\t)\r\n\t\tif (\r\n\t\t\t!root ||\r\n\t\t\t!root.matches('[data-aied-exhibitions]') ||\r\n\t\t\troot.dataset.initialized === 'true'\r\n\t\t)\r\n\t\t\treturn\r\n\t\troot.dataset.initialized = 'true'\r\n\r\n\t\tconst supportedLanguages = ['zh-hant', 'en', 'zh-hans']\r\n\t\tconst language =\r\n\t\t\tlocation.pathname\r\n\t\t\t\t.toLowerCase()\r\n\t\t\t\t.split('\/')\r\n\t\t\t\t.find((segment) => supportedLanguages.includes(segment)) || 'zh-hant'\r\n\t\tconst eventSlug =\r\n\t\t\t(location.pathname.match(\/\\\/event\\\/([^\/]+)\\\/?$\/i) || [])[1] || ''\r\n\t\tconst locale = { 'zh-hant': 'zh-HK', en: 'en-GB', 'zh-hans': 'zh-CN' }[\r\n\t\t\tlanguage\r\n\t\t]\r\n\t\tconst copy = {\r\n\t\t\ten: {\r\n\t\t\t\theading: 'All Exhibitors (Partly)',\r\n\t\t\t\tsearch: 'Search exhibitors',\r\n\t\t\t\tdetails: 'View details',\r\n\t\t\t\tmore: 'Show more exhibitors',\r\n\t\t\t\tless: 'Show fewer exhibitors',\r\n\t\t\t\tloading: 'Loading exhibitors...',\r\n\t\t\t\tfilterTitle: 'No exhibitors match your search.',\r\n\t\t\t\tfilterCopy: 'Try another search term.',\r\n\t\t\t\tfilterKicker: 'No results',\r\n\t\t\t\tclear: 'Clear search',\r\n\t\t\t\tcomingSoonKicker: 'Exhibition',\r\n\t\t\t\tcomingSoonTitle: 'Exhibition',\r\n\t\t\t\tcomingSoonCopy: 'The exhibitor list will be announced soon.',\r\n\t\t\t\tcomingSoonLabel: 'Coming soon',\r\n\t\t\t\tclose: 'Close',\r\n\t\t\t\tabout: 'About',\r\n\t\t\t\tcontact: 'Contact',\r\n\t\t\t\twebsite: 'Visit website',\r\n\t\t\t\twebsiteLabel: 'Website',\r\n\t\t\t\tphotoFallback: 'Product image unavailable'\r\n\t\t\t},\r\n\t\t\t'zh-hant': {\r\n\t\t\t\theading: '\u6240\u6709\u53c3\u5c55\u5546\uff08\u90e8\u5206\uff09',\r\n\t\t\t\tsearch: '\u641c\u5c0b\u53c3\u5c55\u5546',\r\n\t\t\t\tdetails: '\u67e5\u770b\u8a73\u60c5',\r\n\t\t\t\tmore: '\u986f\u793a\u66f4\u591a\u53c3\u5c55\u5546',\r\n\t\t\t\tless: '\u986f\u793a\u8f03\u5c11\u53c3\u5c55\u5546',\r\n\t\t\t\tloading: '\u6b63\u5728\u8f09\u5165\u53c3\u5c55\u5546...',\r\n\t\t\t\tfilterTitle: '\u6c92\u6709\u7b26\u5408\u641c\u5c0b\u689d\u4ef6\u7684\u53c3\u5c55\u5546\u3002',\r\n\t\t\t\tfilterCopy: '\u8acb\u5617\u8a66\u5176\u4ed6\u641c\u5c0b\u5b57\u8a5e\u3002',\r\n\t\t\t\tfilterKicker: '\u6c92\u6709\u7d50\u679c',\r\n\t\t\t\tclear: '\u6e05\u9664\u641c\u5c0b',\r\n\t\t\t\tcomingSoonKicker: '\u5c55\u89bd',\r\n\t\t\t\tcomingSoonTitle: '\u5c55\u89bd',\r\n\t\t\t\tcomingSoonCopy: '\u53c3\u5c55\u5546\u540d\u55ae\u5373\u5c07\u516c\u5e03\u3002',\r\n\t\t\t\tcomingSoonLabel: '\u5373\u5c07\u63a8\u51fa',\r\n\t\t\t\tclose: '\u95dc\u9589',\r\n\t\t\t\tabout: '\u7c21\u4ecb',\r\n\t\t\t\tcontact: '\u806f\u7d61\u4eba',\r\n\t\t\t\twebsite: '\u700f\u89bd\u7db2\u7ad9',\r\n\t\t\t\twebsiteLabel: '\u7db2\u7ad9',\r\n\t\t\t\tphotoFallback: '\u66ab\u7121\u7522\u54c1\u5716\u7247'\r\n\t\t\t},\r\n\t\t\t'zh-hans': {\r\n\t\t\t\theading: '\u6240\u6709\u53c2\u5c55\u5546\uff08\u90e8\u5206\uff09',\r\n\t\t\t\tsearch: '\u641c\u7d22\u53c2\u5c55\u5546',\r\n\t\t\t\tdetails: '\u67e5\u770b\u8be6\u60c5',\r\n\t\t\t\tmore: '\u663e\u793a\u66f4\u591a\u53c2\u5c55\u5546',\r\n\t\t\t\tless: '\u663e\u793a\u8f83\u5c11\u53c2\u5c55\u5546',\r\n\t\t\t\tloading: '\u6b63\u5728\u52a0\u8f7d\u53c2\u5c55\u5546...',\r\n\t\t\t\tfilterTitle: '\u6ca1\u6709\u7b26\u5408\u641c\u7d22\u6761\u4ef6\u7684\u53c2\u5c55\u5546\u3002',\r\n\t\t\t\tfilterCopy: '\u8bf7\u5c1d\u8bd5\u5176\u4ed6\u641c\u7d22\u8bcd\u3002',\r\n\t\t\t\tfilterKicker: '\u6ca1\u6709\u7ed3\u679c',\r\n\t\t\t\tclear: '\u6e05\u9664\u641c\u7d22',\r\n\t\t\t\tcomingSoonKicker: '\u5c55\u89c8',\r\n\t\t\t\tcomingSoonTitle: '\u5c55\u89c8',\r\n\t\t\t\tcomingSoonCopy: '\u53c2\u5c55\u5546\u540d\u5355\u5373\u5c06\u516c\u5e03\u3002',\r\n\t\t\t\tcomingSoonLabel: '\u5373\u5c06\u63a8\u51fa',\r\n\t\t\t\tclose: '\u5173\u95ed',\r\n\t\t\t\tabout: '\u7b80\u4ecb',\r\n\t\t\t\tcontact: '\u8054\u7cfb\u4eba',\r\n\t\t\t\twebsite: '\u8bbf\u95ee\u7f51\u7ad9',\r\n\t\t\t\twebsiteLabel: '\u7f51\u7ad9',\r\n\t\t\t\tphotoFallback: '\u6682\u65e0\u4ea7\u54c1\u56fe\u7247'\r\n\t\t\t}\r\n\t\t}[language]\r\n\r\n\t\tconst searchElement = root.querySelector('[data-search]')\r\n\t\tconst searchLabelElement = root.querySelector('[data-search-label]')\r\n\t\tconst headingElement = root.querySelector('[data-exhibitors-heading]')\r\n\t\tconst statusElement = root.querySelector('[data-status]')\r\n\t\tconst gridElement = root.querySelector('[data-grid]')\r\n\t\tconst actionsElement = root.querySelector('[data-actions]')\r\n\t\tconst dialogElement = root.querySelector('[data-dialog]')\r\n\t\tconst dialogContentElement = root.querySelector('[data-dialog-content]')\r\n\t\tconst mobileQuery = window.matchMedia('(max-width: 767.98px)')\r\n\t\tlet exhibitors = []\r\n\t\tlet searchTerm = ''\r\n\t\tlet visibleCount = initialVisibleCount()\r\n\t\tlet dialogTrigger = null\r\n\r\n\t\tsearchElement.placeholder = copy.search\r\n\t\tsearchElement.setAttribute('aria-label', copy.search)\r\n\t\tsearchLabelElement.textContent = copy.search\r\n\t\theadingElement.textContent = copy.heading\r\n\r\n\t\tfunction initialVisibleCount() {\r\n\t\t\treturn mobileQuery.matches ? 4 : 8\r\n\t\t}\r\n\r\n\t\tfunction createElement(tag, className, text) {\r\n\t\t\tconst element = document.createElement(tag)\r\n\t\t\tif (className) element.className = className\r\n\t\t\tif (text !== undefined) element.textContent = text\r\n\t\t\treturn element\r\n\t\t}\r\n\r\n\t\tfunction icon(type) {\r\n\t\t\tconst paths = {\r\n\t\t\t\tclose: '<path d=\"m6 6 12 12M18 6 6 18\"><\/path>',\r\n\t\t\t\tarrow: '<path d=\"M4 12h15M14 7l5 5-5 5\"><\/path>'\r\n\t\t\t}\r\n\t\t\tconst svg = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'svg')\r\n\t\t\tsvg.setAttribute('aria-hidden', 'true')\r\n\t\t\tsvg.setAttribute('viewBox', '0 0 24 24')\r\n\t\t\tsvg.setAttribute('fill', 'none')\r\n\t\t\tsvg.setAttribute('stroke', 'currentColor')\r\n\t\t\tsvg.setAttribute('stroke-width', '2')\r\n\t\t\tsvg.innerHTML = paths[type]\r\n\t\t\treturn svg\r\n\t\t}\r\n\r\n\t\tfunction normalize(item, index) {\r\n\t\t\treturn {\r\n\t\t\t\tid: `exhibition-${index}`,\r\n\t\t\t\ttitle: String((item && item.title) || ''),\r\n\t\t\t\tdescription: String((item && item.description) || ''),\r\n\t\t\t\tlogo: String((item && item.logo) || ''),\r\n\t\t\t\tphoto: String((item && item.photo) || ''),\r\n\t\t\t\tname: String((item && item.name) || ''),\r\n\t\t\t\temail: String((item && item.email) || ''),\r\n\t\t\t\tlink: String((item && item.link) || '')\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction createImage(url, alt, className, fallbackText) {\r\n\t\t\tconst wrapper = createElement('div', `${className}-wrap`)\r\n\t\t\tconst fallback = createElement(\r\n\t\t\t\t'span',\r\n\t\t\t\t`${className}-fallback`,\r\n\t\t\t\tfallbackText\r\n\t\t\t)\r\n\t\t\tif (!url) {\r\n\t\t\t\twrapper.append(fallback)\r\n\t\t\t\treturn wrapper\r\n\t\t\t}\r\n\t\t\tconst image = document.createElement('img')\r\n\t\t\timage.className = className\r\n\t\t\timage.src = url\r\n\t\t\timage.alt = alt\r\n\t\t\timage.loading = 'lazy'\r\n\t\t\timage.addEventListener(\r\n\t\t\t\t'error',\r\n\t\t\t\t() => {\r\n\t\t\t\t\timage.remove()\r\n\t\t\t\t\twrapper.append(fallback)\r\n\t\t\t\t},\r\n\t\t\t\t{ once: true }\r\n\t\t\t)\r\n\t\t\twrapper.append(image)\r\n\t\t\treturn wrapper\r\n\t\t}\r\n\r\n\t\tfunction createCard(exhibitor) {\r\n\t\t\tconst card = createElement('article', 'aied-exhibitions__card')\r\n\t\t\tconst logoPanel = createElement('div', 'aied-exhibitions__logo-panel')\r\n\t\t\tlogoPanel.append(\r\n\t\t\t\tcreateImage(\r\n\t\t\t\t\texhibitor.logo,\r\n\t\t\t\t\t`${exhibitor.title} logo`,\r\n\t\t\t\t\t'aied-exhibitions__logo',\r\n\t\t\t\t\t'Logo'\r\n\t\t\t\t)\r\n\t\t\t)\r\n\t\t\tconst body = createElement('div', 'aied-exhibitions__card-body')\r\n\t\t\tbody.append(\r\n\t\t\t\tcreateElement('h3', 'aied-exhibitions__title', exhibitor.title || '-')\r\n\t\t\t)\r\n\t\t\tif (exhibitor.description)\r\n\t\t\t\tbody.append(\r\n\t\t\t\t\tcreateElement(\r\n\t\t\t\t\t\t'p',\r\n\t\t\t\t\t\t'aied-exhibitions__description',\r\n\t\t\t\t\t\texhibitor.description\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\tconst footer = createElement('div', 'aied-exhibitions__card-footer')\r\n\t\t\tconst details = createElement('button', 'aied-exhibitions__details')\r\n\t\t\tdetails.type = 'button'\r\n\t\t\tdetails.dataset.exhibitorId = exhibitor.id\r\n\t\t\tdetails.append(document.createTextNode(copy.details), icon('arrow'))\r\n\t\t\tfooter.append(details)\r\n\t\t\tcard.append(logoPanel, body, footer)\r\n\t\t\treturn card\r\n\t\t}\r\n\r\n\t\tfunction renderState(type) {\r\n\t\t\tconst state = createElement('div', 'aied-exhibitions__state')\r\n\t\t\tif (type === 'loading') {\r\n\t\t\t\tstate.append(\r\n\t\t\t\t\tcreateElement('span', 'aied-exhibitions__loader'),\r\n\t\t\t\t\tcreateElement('p', 'aied-exhibitions__state-copy', copy.loading)\r\n\t\t\t\t)\r\n\t\t\t} else if (type === 'filter') {\r\n\t\t\t\tstate.classList.add('aied-exhibitions__filter')\r\n\t\t\t\tconst clear = createElement(\r\n\t\t\t\t\t'button',\r\n\t\t\t\t\t'aied-exhibitions__clear',\r\n\t\t\t\t\tcopy.clear\r\n\t\t\t\t)\r\n\t\t\t\tclear.type = 'button'\r\n\t\t\t\tclear.addEventListener('click', () => {\r\n\t\t\t\t\tsearchTerm = ''\r\n\t\t\t\t\tsearchElement.value = ''\r\n\t\t\t\t\trender()\r\n\t\t\t\t\tsearchElement.focus()\r\n\t\t\t\t})\r\n\t\t\t\tstate.append(\r\n\t\t\t\t\tcreateElement(\r\n\t\t\t\t\t\t'span',\r\n\t\t\t\t\t\t'aied-exhibitions__state-kicker',\r\n\t\t\t\t\t\tcopy.filterKicker\r\n\t\t\t\t\t),\r\n\t\t\t\t\tcreateElement('p', 'aied-exhibitions__state-title', copy.filterTitle),\r\n\t\t\t\t\tcreateElement('p', 'aied-exhibitions__state-copy', copy.filterCopy),\r\n\t\t\t\t\tclear\r\n\t\t\t\t)\r\n\t\t\t} else {\r\n\t\t\t\t\/\/ Both the \"no exhibitors\" and the failed-request paths show the Coming\r\n\t\t\t\t\/\/ Soon card (nopost.png), so neither keeps a text row of its own.\r\n\t\t\t\tstate.classList.add('aied-exhibitions__coming-soon')\r\n\t\t\t\tconst content = createElement(\r\n\t\t\t\t\t'div',\r\n\t\t\t\t\t'aied-exhibitions__coming-soon-content'\r\n\t\t\t\t)\r\n\t\t\t\tcontent.append(\r\n\t\t\t\t\tcreateElement(\r\n\t\t\t\t\t\t'span',\r\n\t\t\t\t\t\t'aied-exhibitions__coming-soon-kicker',\r\n\t\t\t\t\t\tcopy.comingSoonKicker\r\n\t\t\t\t\t),\r\n\t\t\t\t\tcreateElement(\r\n\t\t\t\t\t\t'h3',\r\n\t\t\t\t\t\t'aied-exhibitions__coming-soon-title',\r\n\t\t\t\t\t\tcopy.comingSoonTitle\r\n\t\t\t\t\t),\r\n\t\t\t\t\tcreateElement(\r\n\t\t\t\t\t\t'p',\r\n\t\t\t\t\t\t'aied-exhibitions__coming-soon-copy',\r\n\t\t\t\t\t\tcopy.comingSoonCopy\r\n\t\t\t\t\t),\r\n\t\t\t\t\tcreateElement(\r\n\t\t\t\t\t\t'span',\r\n\t\t\t\t\t\t'aied-exhibitions__coming-soon-label',\r\n\t\t\t\t\t\tcopy.comingSoonLabel\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tstate.append(content)\r\n\t\t\t}\r\n\t\t\tgridElement.replaceChildren(state)\r\n\t\t\tactionsElement.replaceChildren()\r\n\t\t}\r\n\r\n\t\tfunction filteredExhibitors() {\r\n\t\t\tconst term = searchTerm.trim().toLocaleLowerCase(locale)\r\n\t\t\tif (!term) return exhibitors\r\n\t\t\treturn exhibitors.filter((exhibitor) =>\r\n\t\t\t\t`${exhibitor.title} ${exhibitor.description}`\r\n\t\t\t\t\t.toLocaleLowerCase(locale)\r\n\t\t\t\t\t.includes(term)\r\n\t\t\t)\r\n\t\t}\r\n\r\n\t\tfunction render() {\r\n\t\t\tconst filtered = filteredExhibitors()\r\n\t\t\tif (!filtered.length) {\r\n\t\t\t\trenderState(exhibitors.length ? 'filter' : 'empty')\r\n\t\t\t\tstatusElement.textContent = ''\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tgridElement.replaceChildren(\r\n\t\t\t\t...filtered.slice(0, visibleCount).map(createCard)\r\n\t\t\t)\r\n\t\t\tactionsElement.replaceChildren()\r\n\t\t\tif (filtered.length > initialVisibleCount()) {\r\n\t\t\t\tconst button = createElement('button', 'aied-exhibitions__more')\r\n\t\t\t\tbutton.type = 'button'\r\n\t\t\t\tbutton.textContent =\r\n\t\t\t\t\tvisibleCount < filtered.length ? copy.more : copy.less\r\n\t\t\t\tbutton.append(icon('arrow'))\r\n\t\t\t\tbutton.addEventListener('click', () => {\r\n\t\t\t\t\tvisibleCount =\r\n\t\t\t\t\t\tvisibleCount < filtered.length\r\n\t\t\t\t\t\t\t? visibleCount + initialVisibleCount()\r\n\t\t\t\t\t\t\t: initialVisibleCount()\r\n\t\t\t\t\trender()\r\n\t\t\t\t})\r\n\t\t\t\tactionsElement.append(button)\r\n\t\t\t}\r\n\t\t\tstatusElement.textContent = ''\r\n\t\t}\r\n\r\n\t\tfunction renderDialog(exhibitor) {\r\n\t\t\tconst header = createElement('header', 'aied-exhibitions__dialog-header')\r\n\t\t\tconst logo = createImage(\r\n\t\t\t\texhibitor.logo,\r\n\t\t\t\t`${exhibitor.title} logo`,\r\n\t\t\t\t'aied-exhibitions__dialog-logo',\r\n\t\t\t\t'Logo'\r\n\t\t\t)\r\n\t\t\tconst headerCopy = createElement(\r\n\t\t\t\t'div',\r\n\t\t\t\t'aied-exhibitions__dialog-header-copy'\r\n\t\t\t)\r\n\t\t\tconst title = createElement(\r\n\t\t\t\t'h2',\r\n\t\t\t\t'aied-exhibitions__dialog-title',\r\n\t\t\t\texhibitor.title || '-'\r\n\t\t\t)\r\n\t\t\ttitle.id = 'aied-exhibitions-dialog-title'\r\n\t\t\theaderCopy.append(title)\r\n\t\t\tif (exhibitor.link) {\r\n\t\t\t\tconst website = createElement(\r\n\t\t\t\t\t'a',\r\n\t\t\t\t\t'aied-exhibitions__dialog-website',\r\n\t\t\t\t\texhibitor.link.replace(\/^https?:\\\/\\\/\/, '').replace(\/\\\/$\/, '')\r\n\t\t\t\t)\r\n\t\t\t\twebsite.href = exhibitor.link\r\n\t\t\t\twebsite.target = '_blank'\r\n\t\t\t\twebsite.rel = 'noopener noreferrer'\r\n\t\t\t\theaderCopy.append(website)\r\n\t\t\t}\r\n\t\t\tconst close = createElement('button', 'aied-exhibitions__dialog-close')\r\n\t\t\tclose.type = 'button'\r\n\t\t\tclose.setAttribute('aria-label', copy.close)\r\n\t\t\tclose.append(icon('close'))\r\n\t\t\tclose.addEventListener('click', () => dialogElement.close())\r\n\t\t\theader.append(logo, headerCopy, close)\r\n\r\n\t\t\tconst body = createElement('div', 'aied-exhibitions__dialog-body')\r\n\t\t\tconst media = createElement('div', 'aied-exhibitions__dialog-media')\r\n\t\t\tmedia.append(\r\n\t\t\t\tcreateImage(\r\n\t\t\t\t\texhibitor.photo,\r\n\t\t\t\t\texhibitor.title,\r\n\t\t\t\t\t'aied-exhibitions__photo',\r\n\t\t\t\t\tcopy.photoFallback\r\n\t\t\t\t)\r\n\t\t\t)\r\n\t\t\tconst aside = createElement('aside', 'aied-exhibitions__contact')\r\n\t\t\taside.append(\r\n\t\t\t\tcreateElement('span', 'aied-exhibitions__dialog-label', copy.contact)\r\n\t\t\t)\r\n\t\t\tif (exhibitor.name)\r\n\t\t\t\taside.append(\r\n\t\t\t\t\tcreateElement(\r\n\t\t\t\t\t\t'strong',\r\n\t\t\t\t\t\t'aied-exhibitions__contact-name',\r\n\t\t\t\t\t\texhibitor.name\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\tif (exhibitor.email) {\r\n\t\t\t\tconst email = createElement(\r\n\t\t\t\t\t'a',\r\n\t\t\t\t\t'aied-exhibitions__contact-email',\r\n\t\t\t\t\texhibitor.email\r\n\t\t\t\t)\r\n\t\t\t\temail.href = `mailto:${exhibitor.email}`\r\n\t\t\t\taside.append(email)\r\n\t\t\t}\r\n\t\t\tconst overview = createElement(\r\n\t\t\t\t'section',\r\n\t\t\t\t'aied-exhibitions__dialog-about'\r\n\t\t\t)\r\n\t\t\toverview.append(\r\n\t\t\t\tcreateElement('span', 'aied-exhibitions__dialog-label', copy.about),\r\n\t\t\t\tcreateElement('p', '', exhibitor.description || '-')\r\n\t\t\t)\r\n\t\t\tbody.append(media, aside, overview)\r\n\r\n\t\t\tconst fragment = document.createDocumentFragment()\r\n\t\t\tfragment.append(header, body)\r\n\t\t\tif (exhibitor.link) {\r\n\t\t\t\tconst footer = createElement(\r\n\t\t\t\t\t'footer',\r\n\t\t\t\t\t'aied-exhibitions__dialog-footer'\r\n\t\t\t\t)\r\n\t\t\t\tconst website = createElement(\r\n\t\t\t\t\t'a',\r\n\t\t\t\t\t'aied-exhibitions__visit',\r\n\t\t\t\t\tcopy.website\r\n\t\t\t\t)\r\n\t\t\t\twebsite.href = exhibitor.link\r\n\t\t\t\twebsite.target = '_blank'\r\n\t\t\t\twebsite.rel = 'noopener noreferrer'\r\n\t\t\t\twebsite.append(icon('arrow'))\r\n\t\t\t\tfooter.append(website)\r\n\t\t\t\tfragment.append(footer)\r\n\t\t\t}\r\n\t\t\tdialogContentElement.replaceChildren(fragment)\r\n\t\t\tdialogElement.setAttribute('aria-labelledby', title.id)\r\n\t\t\treturn close\r\n\t\t}\r\n\r\n\t\tgridElement.addEventListener('click', (event) => {\r\n\t\t\tconst button = event.target.closest('[data-exhibitor-id]')\r\n\t\t\tif (!button) return\r\n\t\t\tconst exhibitor = exhibitors.find(\r\n\t\t\t\t(item) => item.id === button.dataset.exhibitorId\r\n\t\t\t)\r\n\t\t\tif (!exhibitor) return\r\n\t\t\tdialogTrigger = button\r\n\t\t\tconst close = renderDialog(exhibitor)\r\n\t\t\tdialogElement.showModal()\r\n\t\t\tclose.focus()\r\n\t\t})\r\n\r\n\t\tdialogElement.addEventListener('click', (event) => {\r\n\t\t\tif (event.target === dialogElement) dialogElement.close()\r\n\t\t})\r\n\r\n\t\tdialogElement.addEventListener('close', () => {\r\n\t\t\tif (dialogTrigger && document.contains(dialogTrigger))\r\n\t\t\t\tdialogTrigger.focus()\r\n\t\t\tdialogTrigger = null\r\n\t\t})\r\n\r\n\t\tsearchElement.addEventListener('input', () => {\r\n\t\t\tsearchTerm = searchElement.value\r\n\t\t\tvisibleCount = initialVisibleCount()\r\n\t\t\trender()\r\n\t\t})\r\n\r\n\t\tmobileQuery.addEventListener('change', () => {\r\n\t\t\tvisibleCount = initialVisibleCount()\r\n\t\t\trender()\r\n\t\t})\r\n\r\n\t\trenderState('loading')\r\n\t\t\/\/ 'event' is only sent on an event page, so the plain workshops page keeps\r\n\t\t\/\/ asking for the full list and every event gets its own cache entry below.\r\n\t\tconst endpointParams = new URLSearchParams({ lang: language })\r\n\t\tif (eventSlug) endpointParams.set('event', eventSlug)\r\n\t\tconst endpoint = `\/wp-json\/aied\/exhibitions\/list?${endpointParams.toString()}`\r\n\t\twindow.__aiedExhibitionRequests =\r\n\t\t\twindow.__aiedExhibitionRequests || Object.create(null)\r\n\t\tif (!window.__aiedExhibitionRequests[endpoint]) {\r\n\t\t\twindow.__aiedExhibitionRequests[endpoint] = fetch(endpoint, {\r\n\t\t\t\tcredentials: 'same-origin'\r\n\t\t\t})\r\n\t\t\t\t.then((response) => {\r\n\t\t\t\t\tif (!response.ok)\r\n\t\t\t\t\t\tthrow new Error(`Exhibition request failed: ${response.status}`)\r\n\t\t\t\t\treturn response.json()\r\n\t\t\t\t})\r\n\t\t\t\t.then((data) => {\r\n\t\t\t\t\tif (!Array.isArray(data))\r\n\t\t\t\t\t\tthrow new TypeError('Exhibition response must be an array.')\r\n\t\t\t\t\treturn data\r\n\t\t\t\t})\r\n\t\t}\r\n\r\n\t\twindow.__aiedExhibitionRequests[endpoint]\r\n\t\t\t.then((data) => {\r\n\t\t\t\texhibitors = data.map(normalize).filter((exhibitor) => exhibitor.title)\r\n\t\t\t\trender()\r\n\t\t\t})\r\n\t\t\t.catch(() => {\r\n\t\t\t\trenderState('error')\r\n\t\t\t\tstatusElement.textContent = ''\r\n\t\t\t})\r\n\t})()\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>home \/ exhibition Exhibition EdTech solutions on show, with live demonstrations from exhibitors.<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":20352,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-20388","page","type-page","status-publish","hentry"],"pp_statuses_selecting_workflow":false,"pp_workflow_action":"current","pp_status_selection":"publish","acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Exhibition - AIED - EdCity<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Exhibition - AIED - EdCity\" \/>\n<meta property=\"og:description\" content=\"home \/ exhibition Exhibition EdTech solutions on show, with live demonstrations from exhibitors.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/\" \/>\n<meta property=\"og:site_name\" content=\"EdCity\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-29T10:17:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/campaignprodstor.blob.core.windows.net\/uploads\/2026\/09\/aied-watermark.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/aied\\\/exhibition\\\/\",\"url\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/aied\\\/exhibition\\\/\",\"name\":\"Exhibition - AIED - EdCity\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/aied\\\/exhibition\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/aied\\\/exhibition\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/campaignprodstor.blob.core.windows.net\\\/uploads\\\/2026\\\/09\\\/aied-watermark.png\",\"datePublished\":\"2026-09-17T07:04:59+00:00\",\"dateModified\":\"2026-10-29T10:17:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/aied\\\/exhibition\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/web.edcity.hk\\\/en\\\/aied\\\/exhibition\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/aied\\\/exhibition\\\/#primaryimage\",\"url\":\"https:\\\/\\\/campaignprodstor.blob.core.windows.net\\\/uploads\\\/2026\\\/09\\\/aied-watermark.png\",\"contentUrl\":\"https:\\\/\\\/campaignprodstor.blob.core.windows.net\\\/uploads\\\/2026\\\/09\\\/aied-watermark.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/aied\\\/exhibition\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AIED\",\"item\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/aied\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Exhibition\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/\",\"name\":\"\u9999\u6e2f\u6559\u80b2\u57ce\",\"description\":\"EdCity\",\"publisher\":{\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/#organization\",\"name\":\"EdCity\",\"url\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/campaignprodstor.blob.core.windows.net\\\/uploads\\\/2025\\\/02\\\/hkedcity_logo.svg\",\"contentUrl\":\"https:\\\/\\\/campaignprodstor.blob.core.windows.net\\\/uploads\\\/2025\\\/02\\\/hkedcity_logo.svg\",\"width\":252,\"height\":94,\"caption\":\"EdCity\"},\"image\":{\"@id\":\"https:\\\/\\\/web.edcity.hk\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Exhibition - AIED - EdCity","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/","og_locale":"en_US","og_type":"article","og_title":"Exhibition - AIED - EdCity","og_description":"home \/ exhibition Exhibition EdTech solutions on show, with live demonstrations from exhibitors.","og_url":"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/","og_site_name":"EdCity","article_modified_time":"2026-10-29T10:17:26+00:00","og_image":[{"url":"https:\/\/campaignprodstor.blob.core.windows.net\/uploads\/2026\/09\/aied-watermark.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/","url":"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/","name":"Exhibition - AIED - EdCity","isPartOf":{"@id":"https:\/\/web.edcity.hk\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/#primaryimage"},"image":{"@id":"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/#primaryimage"},"thumbnailUrl":"https:\/\/campaignprodstor.blob.core.windows.net\/uploads\/2026\/09\/aied-watermark.png","datePublished":"2026-09-17T07:04:59+00:00","dateModified":"2026-10-29T10:17:26+00:00","breadcrumb":{"@id":"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/web.edcity.hk\/en\/aied\/exhibition\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/#primaryimage","url":"https:\/\/campaignprodstor.blob.core.windows.net\/uploads\/2026\/09\/aied-watermark.png","contentUrl":"https:\/\/campaignprodstor.blob.core.windows.net\/uploads\/2026\/09\/aied-watermark.png"},{"@type":"BreadcrumbList","@id":"https:\/\/web.edcity.hk\/en\/aied\/exhibition\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/web.edcity.hk\/en\/"},{"@type":"ListItem","position":2,"name":"AIED","item":"https:\/\/web.edcity.hk\/en\/aied\/"},{"@type":"ListItem","position":3,"name":"Exhibition"}]},{"@type":"WebSite","@id":"https:\/\/web.edcity.hk\/en\/#website","url":"https:\/\/web.edcity.hk\/en\/","name":"\u9999\u6e2f\u6559\u80b2\u57ce","description":"EdCity","publisher":{"@id":"https:\/\/web.edcity.hk\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/web.edcity.hk\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/web.edcity.hk\/en\/#organization","name":"EdCity","url":"https:\/\/web.edcity.hk\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/web.edcity.hk\/en\/#\/schema\/logo\/image\/","url":"https:\/\/campaignprodstor.blob.core.windows.net\/uploads\/2025\/02\/hkedcity_logo.svg","contentUrl":"https:\/\/campaignprodstor.blob.core.windows.net\/uploads\/2025\/02\/hkedcity_logo.svg","width":252,"height":94,"caption":"EdCity"},"image":{"@id":"https:\/\/web.edcity.hk\/en\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/web.edcity.hk\/en\/wp-json\/wp\/v2\/pages\/20388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.edcity.hk\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/web.edcity.hk\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/web.edcity.hk\/en\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/web.edcity.hk\/en\/wp-json\/wp\/v2\/comments?post=20388"}],"version-history":[{"count":52,"href":"https:\/\/web.edcity.hk\/en\/wp-json\/wp\/v2\/pages\/20388\/revisions"}],"predecessor-version":[{"id":22371,"href":"https:\/\/web.edcity.hk\/en\/wp-json\/wp\/v2\/pages\/20388\/revisions\/22371"}],"up":[{"embeddable":true,"href":"https:\/\/web.edcity.hk\/en\/wp-json\/wp\/v2\/pages\/20352"}],"wp:attachment":[{"href":"https:\/\/web.edcity.hk\/en\/wp-json\/wp\/v2\/media?parent=20388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}