NathanRoll commited on
Commit
4606df8
·
verified ·
1 Parent(s): 9fd8a8f

Hide Gradio menu and add packing favicon

Browse files
Files changed (2) hide show
  1. app.py +49 -3
  2. assets/favicon.svg +4 -0
app.py CHANGED
@@ -29,6 +29,7 @@ from packing_benchmark.verifier import (
29
  SPACE_ROOT = Path(__file__).resolve().parent
30
  DATA_DIR = SPACE_ROOT / "data"
31
  DATA_DIR.mkdir(parents=True, exist_ok=True)
 
32
  HYDRATE_STATUS = maybe_hydrate_from_dataset(DATA_DIR)
33
  STORE = SolutionStore(DATA_DIR)
34
 
@@ -218,6 +219,9 @@ footer,
218
  .gradio-container .footer,
219
  .gradio-container .built-with,
220
  .gradio-container .api-docs,
 
 
 
221
  .gradio-container a[href*="view=api"],
222
  .gradio-container a[href*="/api"],
223
  .gradio-container button[aria-label="Settings"],
@@ -226,8 +230,14 @@ footer,
226
  .gradio-container button[aria-label="More options"],
227
  .gradio-container button[title="More"],
228
  .gradio-container button[title="More options"],
 
229
  .gradio-container [data-testid="settings-button"],
230
- .gradio-container [data-testid="more-button"] {
 
 
 
 
 
231
  display: none !important;
232
  }
233
 
@@ -1132,6 +1142,32 @@ APP_JS = """
1132
  tab.click();
1133
  return true;
1134
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1135
  const isNativeHomeControl = (element) => {
1136
  if (!element) {
1137
  return false;
@@ -1187,9 +1223,19 @@ APP_JS = """
1187
  document.addEventListener("pointerdown", routeFromClick, true);
1188
  document.addEventListener("click", routeFromClick, true);
1189
  document.addEventListener("click", nativeHomeFallback, true);
 
 
 
 
 
1190
  }
1191
  """
1192
 
 
 
 
 
 
1193
  SAMPLE_JSON = """{
1194
  "schema_version": "packing-benchmark/v1",
1195
  "case": "triintri@1",
@@ -2219,7 +2265,7 @@ def prewarm_pages() -> None:
2219
  family_page_html(setup)
2220
 
2221
 
2222
- with gr.Blocks(**supported_gradio_kwargs(gr.Blocks, title="Packing Benchmark", analytics_enabled=False)) as demo:
2223
  with gr.Tabs():
2224
  with gr.Tab("Home"):
2225
  browse_page = gr.HTML(directory_html())
@@ -2312,5 +2358,5 @@ if __name__ == "__main__":
2312
  js=APP_JS,
2313
  server_name="0.0.0.0",
2314
  ssr_mode=False,
2315
- **supported_call_kwargs(demo.launch, show_api=False),
2316
  )
 
29
  SPACE_ROOT = Path(__file__).resolve().parent
30
  DATA_DIR = SPACE_ROOT / "data"
31
  DATA_DIR.mkdir(parents=True, exist_ok=True)
32
+ FAVICON_PATH = SPACE_ROOT / "assets" / "favicon.svg"
33
  HYDRATE_STATUS = maybe_hydrate_from_dataset(DATA_DIR)
34
  STORE = SolutionStore(DATA_DIR)
35
 
 
219
  .gradio-container .footer,
220
  .gradio-container .built-with,
221
  .gradio-container .api-docs,
222
+ .gradio-container .app > header,
223
+ .gradio-container .app > .header,
224
+ .gradio-container .contain > button:not(.site-nav-link),
225
  .gradio-container a[href*="view=api"],
226
  .gradio-container a[href*="/api"],
227
  .gradio-container button[aria-label="Settings"],
 
230
  .gradio-container button[aria-label="More options"],
231
  .gradio-container button[title="More"],
232
  .gradio-container button[title="More options"],
233
+ .gradio-container button[aria-haspopup="menu"],
234
  .gradio-container [data-testid="settings-button"],
235
+ .gradio-container [data-testid="more-button"],
236
+ .gradio-container [data-testid="app-menu"],
237
+ .gradio-container [data-testid="menu-button"],
238
+ .gradio-container [class*="settings"],
239
+ .gradio-container [class*="kebab"],
240
+ .gradio-container [class*="ellipsis"] {
241
  display: none !important;
242
  }
243
 
 
1142
  tab.click();
1143
  return true;
1144
  };
1145
+ const isInsideBenchmarkUi = (element) => Boolean(
1146
+ element.closest(".packing-shell, .site-nav, .submit-shell, .schema-shell, .record-modal, .modal-panel")
1147
+ );
1148
+ const hideGradioChrome = () => {
1149
+ Array.from(document.querySelectorAll("footer, button, a")).forEach((element) => {
1150
+ if (isInsideBenchmarkUi(element)) {
1151
+ return;
1152
+ }
1153
+ const labels = normalizedLabels(element).join(" ");
1154
+ const text = (element.innerText || element.textContent || "").replace(/\\s+/g, "").trim();
1155
+ const rect = element.getBoundingClientRect ? element.getBoundingClientRect() : null;
1156
+ const iconOnlyTopRight = rect
1157
+ && rect.top >= 0
1158
+ && rect.top < 84
1159
+ && rect.right > window.innerWidth - 120
1160
+ && rect.width <= 84
1161
+ && rect.height <= 84
1162
+ && Boolean(element.querySelector && element.querySelector("svg"));
1163
+ const chromeText = /settings|more|menu|useviaapi|builtwithgradio/.test(labels.replace(/\\s+/g, ""))
1164
+ || /^(\\.\\.\\.|…|⋯|⋮)$/.test(text);
1165
+ if (chromeText || iconOnlyTopRight || element.tagName.toLowerCase() === "footer") {
1166
+ element.style.setProperty("display", "none", "important");
1167
+ element.setAttribute("aria-hidden", "true");
1168
+ }
1169
+ });
1170
+ };
1171
  const isNativeHomeControl = (element) => {
1172
  if (!element) {
1173
  return false;
 
1223
  document.addEventListener("pointerdown", routeFromClick, true);
1224
  document.addEventListener("click", routeFromClick, true);
1225
  document.addEventListener("click", nativeHomeFallback, true);
1226
+ hideGradioChrome();
1227
+ window.setTimeout(hideGradioChrome, 100);
1228
+ window.setTimeout(hideGradioChrome, 700);
1229
+ window.setTimeout(hideGradioChrome, 1800);
1230
+ new MutationObserver(hideGradioChrome).observe(document.body, {childList: true, subtree: true});
1231
  }
1232
  """
1233
 
1234
+ APP_HEAD = """
1235
+ <link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2064%2064%22%3E%3Crect%20x%3D%228%22%20y%3D%228%22%20width%3D%2248%22%20height%3D%2248%22%20rx%3D%224%22%20fill%3D%22%23fffdf7%22%20stroke%3D%22%23151515%22%20stroke-width%3D%225%22%2F%3E%3Cpath%20d%3D%22M32%2016%2051%2048H13Z%22%20fill%3D%22%23e69f00%22%20stroke%3D%22%23151515%22%20stroke-width%3D%224%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E">
1236
+ <link rel="shortcut icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2064%2064%22%3E%3Crect%20x%3D%228%22%20y%3D%228%22%20width%3D%2248%22%20height%3D%2248%22%20rx%3D%224%22%20fill%3D%22%23fffdf7%22%20stroke%3D%22%23151515%22%20stroke-width%3D%225%22%2F%3E%3Cpath%20d%3D%22M32%2016%2051%2048H13Z%22%20fill%3D%22%23e69f00%22%20stroke%3D%22%23151515%22%20stroke-width%3D%224%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E">
1237
+ """
1238
+
1239
  SAMPLE_JSON = """{
1240
  "schema_version": "packing-benchmark/v1",
1241
  "case": "triintri@1",
 
2265
  family_page_html(setup)
2266
 
2267
 
2268
+ with gr.Blocks(**supported_gradio_kwargs(gr.Blocks, title="Packing Benchmark", analytics_enabled=False, head=APP_HEAD)) as demo:
2269
  with gr.Tabs():
2270
  with gr.Tab("Home"):
2271
  browse_page = gr.HTML(directory_html())
 
2358
  js=APP_JS,
2359
  server_name="0.0.0.0",
2360
  ssr_mode=False,
2361
+ **supported_call_kwargs(demo.launch, show_api=False, favicon_path=str(FAVICON_PATH)),
2362
  )
assets/favicon.svg ADDED